Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
On REST Authentication database method
|
$1, $2, $3, $4 -> On REST Authentication database method -> $0 | ||||||||
Paramètre | Type | Description | ||||||
$1 | Texte |
![]() |
Nom d’utilisateur | |||||
$2 | Texte |
![]() |
Mot de passe | |||||
$3 | Booléen |
![]() |
Vrai = mode Digest, Faux = mode Basic | |||||
$4 | Texte |
![]() |
Ip address of the caller | |||||
$0 | Booléen |
![]() |
Vrai = requête acceptée, Faux = requête rejetée | |||||
La On REST Authentication database method vous permet de contrôler de manière personnalisée l’ouverture des sessions REST sur 4D. Cette méthode base est automatiquement appelée lorsqu'une nouvelle session est ouverte par un datastore distant (avec la commande Open datastore).
Lorsqu'une demande d’ouverture de session REST est reçue, les identifiants de connexion sont fournis dans l’en-tête de la requête. La On REST Authentication database method est appelée afin de vous permettre d’évaluer ces identifiants. Vous pouvez utiliser la liste des utilisateurs de la base 4D ou votre propre table d’identifiants.
Important : Lorsque la On REST Authentication database method est définie (c’est-à-dire, lorsqu’elle contient au moins un caractère), 4D lui délègue entièrement le contrôle des requêtes REST : le paramétrage éventuellement effectué dans le menu "Lecture/Ecriture" de la page Web/Ressource REST des propriétés de la base est ignoré.
La méthode base reçoit trois paramètres de type texte ($1, $2 et $4) et un booléen ($3), passés par 4D, et retourne un booléen, $0. Vous devez déclarer ces paramètres de la manière suivante :
//Méthode base Sur authentification REST
C_TEXT($1;$2;$4)
C_BOOLEAN($0;$3)
... // Code pour la méthode
$1 contient le nom d’utilisateur et $2 le mot de passe utilisés pour la connexion.
Le mot de passe ($2) peut être reçu soit en clair soit sous forme hachée, en fonction du mode utilisé par la requête. Pour vous permettre d’effectuer le traitement approprié, ce mode est indiqué par le paramètre $3 :
Lorsque la demande de connexion REST provient de la commande Open datastore, le mot de passe et/ou l'adresse IP est toujours envoyé(e) sous forme hachée.
L'adresse IP de $4 est utile lorsque vous souhaitez filtrer certaines adresses IP par exemple.
Vous devez contrôler les identifiants de la connexion REST dans la méthode base. Généralement, vous contrôlerez le nom et le mot de passe à l’aide d’une table d’utilisateurs personnalisée. Si les identifiants sont valides, passez Vrai dans $0. La requête est alors acceptée, 4D ouvre une session et retourne le résultat en JSON.
Sinon, passez Faux dans $0, dans ce cas la connexion est rejetée et le serveur retournera une erreur d’authentification à l’expéditeur de la requête.
Si l’utilisateur est référencé dans la liste des utilisateurs 4D de la base, vous pouvez contrôler directement le mot de passe à l’aide de l’instruction suivante :
$0:=Validate password($1;$2;$3)
La commande Validate password accepte un nom d’utilisateur en premier paramètre ainsi qu’un paramètre optionnel indiquant si le mot de passe est exprimé sous forme hachée.
Si vous souhaitez utiliser votre propre liste d’utilisateurs extérieurement à la liste de la base 4D, vous pouvez stocker leurs mots de passe sous une forme hachée en utilisant le même algorithme que celui utilisé par 4D lors de l’envoi de la requête de connexion à la On REST Authentication database method dans $2. Pour hacher un mot de passe selon cette méthode, il suffit d’écrire :
$MdPHaché:=Generate digest($MdPClair ;4D digest)
La commande Generate digest accepte 4D digest comme algorithme de hachage, correspondant à la méthode utilisée par 4D pour sa gestion interne des mots de passe.
Cet exemple n’accepte que l’utilisateur "admin" avec le mot de passe "123" ne correspondant pas à un utilisateur 4D :
//Méthode base sur authentification REST
C_TEXT($1;$2)
C_BOOLEAN($0;$3)
//$1 : utilisateur
//$2 : mot de passe
//$3 : mode digest
If($1="admin")
If($3)
$0:=($2=Generate digest("123";4D digest))
Else
$0:=($2="123")
End if
Else
$0:=False
End if
Cet exemple exclut une IP (les mots de passe sont hachés avec l'algorithme de hachage 4D dans la dataclass Users) :
// méthode base Sur authentification REST
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") // IP exclu
$user:=ds.Users.query("name=:1";$name).first()
// Les mots de passe sont hachés avec l'algorithme de hachage dans la dataclass Users
If($user#Null)
If($digest &($user.password=$password))
$result:=True
End if
End if
End if
$0:=$result
Dans cet exemple, nous gérons également les utilsateurs 4D :
//méthode base Sur authentification REST
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()
// Les mots de passe sont hachés dans le dataclass Utilisateurs
If($user#Null)
If($digest &($user.password=$password))
$result:=True
End if
Else // Gérer les utilisateurs 4D
$result:=Validate password($name;$password;$digest)
End if
$0:=$result
Produit : 4D
Thème : Méthodes base
Numéro :
3367
Créé : 4D v14
Renommé : 4D v14 R3 (On 4D Mobile Authentication database method)
Modifié : 4D v18
Renommé : 4D v18 (On 4D Mobile Authentication database method)
4D - Langage ( 4D v19)
4D - Langage ( 4D v19.1)
4D - Langage ( 4D v19.4)
4D - Langage ( 4D v19.5)
4D - Langage ( 4D v19.6)
4D - Langage ( 4D v19.7)
4D - Langage ( 4D v19.8)