Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v19.8
Datenbankmethode On REST Authentication

Datenbankmethode On REST Authentication 


 

$1, $2, $3, $4 -> Datenbankmethode On REST Authentication -> $0 
Parameter Typ   Beschreibung
$1  Text in Benutzername
$2  Text in Kennwort
$3  Boolean in Wahr = Digest Modus, Falsch = Basic Modus
$4  Text in Ip Adresse des Aufrufers (caller)
$0  Boolean in Wahr = Öffnen der Sitzung angenommen, Falsch = Öffnen der Sitzung verweigert

Die Datenbankmethode On REST Authentication bietet einen eigenen Weg, um das Öffnen von REST Sessions in 4D zu steuern. Sie wird automatisch aufgerufen, wenn eine neue Sitzung von einem remote Datastore geöffnet wird (über den Befehl Open datastore).

Wird eine Anfrage zum Öffnen einer REST Sitzung empfangen, erscheinen die Identifier der Verbindung im Kopfteil der Anfrage. Die Datenbankmethode On REST Authentication wird aufgerufen, so dass Sie diese Identifier bewerten können. Sie können die Liste der Benutzer für die 4D Datenbank oder Ihre eigene Tabelle mit Identifiern verwenden.

Wichtig: Ist die Datenbankmethode On REST Authentication definiert (z.B. wenn sie mindestens ein Zeichen enthält), delegiert 4D die Kontrolle der REST Anfragen komplett an diese Methode. Die Einstellung über das DropDown-Menü "Lesen/Schreiben" auf der Seite Web > REST Ressource der Datenbank-Eigenschaften wird ignoriert.

Die Datenbankmethode empfängt drei Parameter ($1$2 und $4 ) vom Typ Text und einen vom Typ Boolean ($3), der von 4D übergeben wird, und gibt ein Boolean $0 zurück. Sie deklarieren diese Parameter wie folgt:

  //Datenbankmethode On REST Authentication
 C_TEXT($1;$2;$4)
 C_BOOLEAN($0;$3)
 ... // Code für die Methode

$1 enthält den Benutzernamen, $2 das Kennwort für die Verbindung

Das Kennwort ($2) wird, je nach dem von der Anfrage verwendeten Modus, in Klartext oder verschlüsselt (Hash) empfangen. Der Modus wird im Parameter $3 angegeben und legt somit das weitere Vorgehen fest:

  • Wird das Kennwort in Klartext gesendet (Basic Modus), gibt $3 False zurück.
  • Wird das Kennwort verschlüsselt (Hash) gesendet (Digest Modus), gibt $3 True zurück.

Bei einer REST Verbindungsanfrage über den Befehl Open datastore wird das Kennwort immer verschlüsselt (Hash) gesendet.

Die IP Adresse des aufgerufenen ($4) ist hilfreich, wenn Sie z.B. bestimmte IP Adressen filtern wollen. 

Sie müssen die Identifier der REST Verbindung in der Datenbankmethode prüfen. In der Regel prüfen Sie Name, Kennwort bzw. IP Adresse über eine eigene Benutzertabelle. Bei gültigen Identifiern übergeben Sie True in $0. Die Anfrage wird dann angenommen; 4D führt sie aus und gibt das Ergebnis in JSON zurück.
Andernfalls übergeben Sie False in $0. Dann wird die Verbindung abgewiesen und der Server gibt einen Authentifizierungsfehler an den Absender der Anfrage zurück.

Ist der Benutzer in der Liste der 4D Benutzer der Datenbank eingetragen, können Sie das Kennwort direkt über folgende Anweisung prüfen:

 $0:=Validate password($1;$2;$3)

Die Funktion Validate password akzeptiert einen Benutzernamen als ersten Parameter, sowie einen optionalen Parameter, der angibt, ob das Kennwort verschlüsselt erscheint.

Wollen Sie eine eigene Liste mit Benutzern verwenden, unabhängig von der Liste der 4D Anwendung, können Sie deren Kennwörter verschlüsselt mit demselben Algoritmus sichern, den 4D beim Senden einer Verbindungsanfrage an die Datenbankmethode On REST Authentication in $2 verwendet. Um ein Kennwort mit dieser Methode zu verschlüsseln, schreiben Sie folgende Anweisung:

 $HashedPasswd :=Generate digest($ClearPasswd ;4D digest)

Die Funktion Generate digest akzeptiert 4D digest als Hash-Algorithmus. Diese Funktion verwendet 4D auch zur internen Verwaltung von Kennwörtern.

Dieses Beispiel akzeptiert nur den Benutzer "admin" mit dem Kennwort "123", der nicht mit einem 4D Benutzer übereinstimmt:

  // Datenbankmethode On REST Authentication
 C_TEXT($1;$2)
 C_BOOLEAN($0;$3)
  //$1: user
  //$2: password
  //$3: digest mode
 If($1="admin")
    If($3)
       $0:=($2=Generate digest("123";4D digest))
    Else
       $0:=($2="123")
    End if
 Else
    $0:=False
 End if

Dieses Beispiel schließt eine IP aus (Kennwörter werden mit dem 4D digest Algorithmus in der dataclass Users verschlüsselt):

  // Datenbankmethode On REST Authentication
 C_TEXT($1;$name;$2;$password)
 C_TEXT($4;$ip)
 C_BOOLEAN($0;$result;$3;$digest)
 C_OBJECT($user)
 
 $name:=$1
 $password:=$2
 $digest:=$3
 $ip:=$4
 
 $result:=False
 
 If($ip#"123.45.67.89") //Excluded IP
    $user:=ds.Users.query("name=:1";$name).first()
  // Passwords are hashed with 4D digest algorithm in dataclass Users
    If($user#Null)
       If($digest &($user.password=$password))
          $result:=True
       End if
    End if
 End if
 
 $0:=$result

Dieses Beispiel verwaltet auch 4D Benutzer:

  //Datenbankmethode On REST Authentication
 C_TEXT($1;$name;$2;$password)
 C_BOOLEAN($0;$result;$3;$digest)
 C_OBJECT($user)
 
 $name:=$1
 $password:=$2
 $digest:=$3
 
 $result:=False
 
 $user:=ds.Users.query("name=:1";$name).first()
  // Passwords are hashed in Users dataclass
 If($user#Null)
    If($digest &($user.password=$password))
       $result:=True
    End if
 Else // Manage 4D users
    $result:=Validate password($name;$password;$digest)
 End if
 $0:=$result

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Datenbankmethoden
Nummer: 3367

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v14
Umbenannt: 4D v14 R3 (On 4D Mobile Authentication database method)
Geändert: 4D v18
Umbenannt: 4D v18 (On 4D Mobile Authentication database method)

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v19)
4D Programmiersprache ( 4D v19.1)
4D Programmiersprache ( 4D v19.4)
4D Programmiersprache ( 4D v19.5)
4D Programmiersprache ( 4D v19.6)
4D Programmiersprache ( 4D v19.7)
4D Programmiersprache ( 4D v19.8)