Sécuriser les web-services ; Gestion des identités et des accès :GIDA

 

l’authentification et l’autorisation sont des mécanismes qui permettent de protéger les données et services sensibles.


Néanmoins ce n’est pas toujours évident à mettre en place sur un Web Service, on ne peut pas simplement mettre un captcha devant comme sur un formulaire web.

 

capcha

 

SOAP permet de découper ses messages en 2 parties : un header et un body.


Le body est prévu pour ne contenir que des notions orientées métier.

Le header est là pour recevoir les notions techniques utiles au web service.


C’est donc lui que nous allons utiliser pour contenir les informations d’authentification et d’autorisation.


Les protocoles de sécurité comme WS Security et ses équivalents JAX-WS se basent sur ce header soap.

 

Une pratique accceptable est de mettre en place un web service d’authentification, avec login/password. OTP, one-time password, mot de passe à usage unique 

 

verisign architecture

 

Celui ci ne sera pas filtré car il faut bien qu’il soit interrogeable une première fois. Il fournira des données de sécurité à l’utilisateur qui se sera authentifié via une webmethod prévue à cet effet (comme un token unique à durée de vie limitée dans le temps par exemple, voir cartes securid).

 

SecurID

 

On peut donc créer 2 questions sur le web-service, la 1ere bonne réponse donnera droit d’accéder à l’autre information.

L’utilisateur devra ensuite fournir son login et son mot de passe ou encore mieux, ce token/jeton de sécurité pour chaque appel aux services métiers (dans les header soap pour ne pas mélanger les notions métiers et techniques dans le message).

Cette pratique est le fonctionnement proposé par des protocoles tels que WS Security, JAX-WS.


A noter, un protocole tel que OAuth est adapté pour gérer les autorisations d’accès à un Web-Service, en plus, il est fortement compatible avec les services de type Rest qui sont orientés ressources….

 

Garder toujours à l’esprit que le plus important est de toujours valider les données envoyés par les utilisateurs.

 


Une question? Posez-la ici

 

Besoin d'aide? Remplissez ce petit formulaire, je reviendrai vers vous dès que possible :