Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
Datenbankmethode On REST Authentication
|
$1, $2, $3, $4 -> Datenbankmethode On REST Authentication -> $0 | ||||||||
Parameter | Typ | Beschreibung | ||||||
$1 | Text |
![]() |
Benutzername | |||||
$2 | Text |
![]() |
Kennwort | |||||
$3 | Boolean |
![]() |
Wahr = Digest Modus, Falsch = Basic Modus | |||||
$4 | Text |
![]() |
Ip Adresse des Aufrufers (caller) | |||||
$0 | Boolean |
![]() |
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:
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
Produkt: 4D
Thema: Datenbankmethoden
Nummer:
3367
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)
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)