La fonction AuthIdentifie permet depuis une application de s'authentifier via le service web d'un système partenaire supportant OAuth 2.0, ou le protocole OpenID.


Cette authentification peut être faite uniquement pour autoriser l'accès à une application, ou pour utiliser des API du partenaire grâce à un "token" qu'il fournit lors de l'authentification.

 

La récupération du "token" peut échouer avec le retour suivant :

 


"Erreur en associant la socket au port NN sur la machine"

 

Ce retour se produit en cas d'impossibilité sur le poste qui fait l'authentification, d'accéder à l'adresse affectée à la propriété ..URLRedirection de la variable OAuth2Paramètres passée à la fonction AuthIdentifie.

 


Voici le principe de fonctionnement de ce type d'authentification. Car comme toujours lorsqu'on connaît le mécanisme, il devient bien plus facile de trouver où peuvent être les éventuels points de blocages liés à une configuration spécifique...

 

Lors de l'appel de la fonction AuthIdentifie, l'application "laisse la main" au fournisseur d'authentification sollicité. Par "laisse la main", il faut comprendre que le dialogue entre l'utilisateur de l'application qui s'identifie, et le fournisseur d'authentification est fait dans un navigateur autonome dissocié de l'application (processus totalement séparé). L'application n'intervient pas dans cet échange, c'est un point clé de la sécurité de ce protocole.


La validation de l'authentification et donc l'obtention du "token" qui va avec, est renvoyée par le navigateur à l'application, à la toute fin du processus. Pour renvoyer ce résultat, le protocole OAuth impose que le navigateur qui a été lancé, réponde via une écriture sur une socket (donc sur un port TCP donné) à l'application.


Donc en résumé lors de l'appel de la fonction AuthIdentifie, l'application via le framework de WINDEV va :

  • lancer le navigateur vers l'adresse d'authentification (donnée à la propriété URLAuth) puis vers l'adresse d'obtention du tocken (donnée à la propriété URLToken),
  • se mettre à l'écoute sur le port donné à la propriété ..URLRedirection,
  • rester en attente de la réponse du navigateur.


En cas d'échec de cette communication, on aura le retour "Erreur en associant la socket au port NN sur la machine".


Donc en terme de communication, il faut :

  • que le processus Windows qui correspond à l'application, puisse être appelé par le processus qui correspond au navigateur, via l'adresse donnée par la propriété ..URLRedirection.
    Dans la majeure partie des cas c'est localhost qui est utilisé, car généralement localhost est défini sur toutes les configurations. Si sur une configuration réseau particulière localhost ne permettait pas d'accéder au processus lui-même, il faudrait le remplacer par une ip ou un nom de machine permettant au navigateur d'écrire sur une socket vers cette adresse sur le port donné.
  • qu'aucun dispositif de sécurité type antivirus ou firewall ne bloque les communications locales sur le port donné à la propriété ..URLRedirection.

 

Liens utiles :

Un exemples didactique "WD OAuth" est inclus avec WINDEV. Tous les exemples sont accessibles (téléchargement automatique) à partir de la fenêtre de bienvenue (Ctrl+<).

< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée