version 2004 (Modifiée)
La Méthode base Sur authentification Web est chargée de gérer les accès au moteur de serveur Web. Elle est automatiquement appelée par 4D ou 4D Server lorsqu'une requête d'un navigateur Web requiert l'exécution d'une méthode 4D sur le serveur (appel d'une méthode via un URL 4DACTION ou 4DCGI, une balise 4DSCRIPT, etc.).
La méthode base Sur authentification Web reçoit six paramètres de type Texte, passés par 4D ($1, $2, $3, $4, $5 et $6), et retourne un booléen, $0. Voici la description de ces paramètres :
Paramètres | Type | Description |
$1 | Texte | URL |
$2 | Texte | En-tête + Corps HTTP (dans la limite des 32 ko) |
$3 | Texte | Adresse IP du navigateur |
$4 | Texte | Adresse IP appelée du serveur |
$5 | Texte | Nom d'utilisateur |
$6 | Texte | Mot de passe |
$0 Booléen Vrai = requête acceptée, Faux = requête rejetée
Vous devez déclarer ces paramètres de la manière suivante :
` Méthode base Sur authentification Web C_TEXTE($1;$2;$3;$4;$5;$6) C_BOOLEEN($0) ` Code pour la méthode
Note : Tous les paramètres de la Méthode base Sur authentification Web ne sont pas forcément remplis. Les informations reçues par la méthode base dépendent des options que vous avez sélectionnées dans la boîte de dialogue des Préférences de la base. Référez-vous à la section Sécurité des connexions.
URL
Le premier paramètre ($1) est l'URL saisi par l'utilisateur dans la zone 'Adresse' de son navigateur Web, moins l'adresse hôte.
Prenons l'exemple d'une connexion Intranet. Supposons que l'adresse IP de votre machine serveur Web 4D est 123.4.567.89. Le tableau suivant liste les valeurs de $1 selon l'URL saisi dans le navigateur Web :
URL saisi dans le navigateur Web | Valeur du paramètre $1 |
123.4.567.89 | / |
http://123.4.567.89 | / |
123.4.567.89/Clients | /Clients |
http://123.4.567.89/Clients | /Clients |
http://123.4.567.89/Clients/Ajouter | /Clients/Ajouter |
123.4.567.89/Faire_ceci/Si_OK/Faire_cela | /Faire_ceci/Si_OK/Faire_cela |
En-tête et corps de la requête HTTP
Le deuxième paramètre ($2) est l'en-tête et le corps de la requête HTTP envoyée par le navigateur Web. Notez que ces informations sont passées telles quelles à la Méthode base Sur authentification Web. Le contenu varie en fonction du type de navigateur Web qui tente de se connecter. Si votre application exploite ces informations, il est de votre ressort d'analyser l'en-tête et le corps.
Note : Pour plus d'informations sur ce paramètre, reportez-vous à la description de la Méthode base Sur connexion Web.
Adresse IP du navigateur
Le troisième paramètre ($3) reçoit l'adresse IP de la machine du navigateur. Cette information peut vous permettre, en particulier, de distinguer les connexions Intranet des connexions Internet.
Adresse IP demandée du serveur
Le quatrième paramètre ($4) reçoit l'adresse IP demandée du serveur Web 4D. En effet, 4D autorise le multi-homing, permettant d'exploiter des machines disposant de plusieurs adresses IP. Pour plus d'informations sur ce point, reportez-vous à la section Paramétrages du serveur Web.
Nom d'utilisateur et Mot de passe
Les paramètres $5 et $6 reçoivent le nom d'utilisateur et le mot de passe saisis par l'utilisateur dans la boîte de dialogue standard d'identification affichée par le navigateur, le cas échéant.
Cette boîte de dialogue apparaît pour chaque connexion dès qu'une option de gestion des mots de passe est cochée dans les Préférences de la base (cf. section Sécurité des connexions).
Note : Si le nom d'utilisateur envoyé par le navigateur existe dans 4D, pour des raisons de confidentialité le paramètre $6 n'est alors pas rempli (il reçoit une chaîne vide).
Paramètre $0
La Méthode base Sur authentification Web retourne un booléen dans $0 :
Si $0 est Vrai, la connexion est acceptée.
Si $0 est Faux, la connexion est refusée.
La Méthode base Sur connexion Web n'est exécutée que si la connexion est acceptée par Sur authentification Web.
ATTENTION : Si aucune valeur n'est passée dans $0, ou si $0 n'est pas définie dans la Méthode base Sur authentification Web, la connexion sera considérée comme acceptée, et la Méthode base Sur connexion Web sera exécutée.
Notes
N'appelez aucun élément d'interface dans la Méthode base Sur authentification Web (ALERTE, DIALOGUE, etc.), sinon son exécution sera interrompue et la connexion refusée. Il en est de même si une erreur se produit durant son traitement.
Il est possible d'interdire l'exécution par 4DACTION ou 4DMETHOD de chaque méthode projet à l'aide de l'option "Disponible via 4DACTION, 4DMETHOD et 4DSCRIPT" dans la boîte de dialogue des Propriétés des méthodes. Pour plus d'informations sur ce point, reportez-vous à la section Sécurité des connexions.
Appels de la Méthode base Sur authentification Web
La Méthode base Sur authentification Web est automatiquement appelée, quel que soit le mode, lorsqu'une requête ou un traitement nécessite l'exécution d'une méthode 4D. Elle est également appelée lorsque le serveur Web reçoit un URL statique invalide (par exemple, si la page statique demandée n'existe pas).
La Méthode base Sur authentification Web est donc appelée dans les cas suivants :
lorsque 4D reçoit un URL débutant par 4DACTION/
lorsque 4D reçoit un URL débutant par 4DMETHOD/
lorsque 4D reçoit un URL débutant par 4DCGI/
lorsque 4D reçoit un URL demandant une page statique inexistante
lorsque 4D traite une balise 4DSCRIPT dans une page semi-dynamique
lorsque 4D traite une balise 4DLOOP basée sur une méthode dans une page semi-dynamique
A noter que la Méthode base Sur authentification Web n'est PAS appelée lorsque le serveur reçoit un URL demandant une page statique valide.
Exemples
(1) Exemple de Méthode base Sur authentification Web en mode BASIC :
`Méthode base Sur authentification Web C_TEXTE($5;$6;$3;$4) C_TEXTE($utilisateur;$motPasse;$IPBrowser;$IPServer) C_BOOLEEN($utilisateur4D) TABLEAU TEXTE($utilisateurs;0) TABLEAU ENTIER LONG($nums;0) C_ENTIER LONG($upos) C_BOOLEEN($0) $0:=Faux $utilisateur:=$5 $motPasse:=$6 $IPBrowser:=$3 $IPServer:=$4 `Pour des raisons de sécurité, refuser les noms qui contiennent @ Si (AvecJoker($utilisateur) | AvecJoker($motPasse)) $0:=Faux `La méthode AvecJoker est décrite ci-dessous Sinon `Vérifier si c'est un utilisateur 4D LIRE LISTE UTILISATEURS($utilisateurs;$nums) $upos:=Chercher dans tableau($utilisateurs;$utilisateur) Si ($upos > 0) $utilisateur4D:=Non(Utilisateur supprime($nums{$upos})) Sinon $utilisateur4D:=Faux Fin de si Si (Non($utilisateur4D)) `Ce n'est pas un utilisateur défini dans 4D, chercher dans la table des utilisateurs Web CHERCHER([WebUsers];[WebUsers]User=$utilisateur;*) CHERCHER([WebUsers]; & [WebUsers]Password=$motPasse) $0:=(Enregistrements trouves([WebUsers]) = 1) Sinon $0:=Vrai Fin de si Fin de si `Est-ce une connexion intranet ? Si (Sous chaine($IPBrowser;1;7) # "192.100.") $0:=Faux Fin de si
(2) Exemple de méthode base Sur authentification Web en mode DIGEST :
` Méthode base Sur authentification Web C_TEXTE($1;$2;$5;$6;$3;$4) C_TEXTE($utilisateur) C_BOOLEEN($0) $0:=Faux $utilisateur:=$5 `Pour des raisons de sécurité, refuser les noms qui contiennent @ Si (AvecJoker($utilisateur)) $0:=Faux `La méthode AvecJoker est décrite ci-dessous Sinon CHERCHER([WebUsers];[WebUsers]User=$utilisateur) Si (OK=1) $0:=Valider mot de passe digest Web($utilisateur;[WebUsers]Mdp) Sinon $0:=Faux `Utilisateur inexistant Fin de si Fin de siLa Méthode projet AvecJoker est décrite ci-dessous :
`Méthode projet AvecJoker `AvecJoker ( Chaine ) -> Booléen `AvecJoker ( Nom ) -> Contient un joker C_ENTIER($i) C_BOOLEEN($0) C_TEXTE($1) $0:=Faux Boucle($i;1;Longueur($1)) Si (Code de caractere(Sous chaine($1;$i;1)) = Code de caractere("@")) $0:=Vrai Fin de si Fin de boucle
Référence
Méthode base Sur connexion Web, Présentation des méthodes base, Sécurité des connexions, URLs et actions de formulaires.