Méthodes de sécurité de servlet

Les méthodes de sécurité de servlet authenticate, login, logout, getRemoteUser, isUserInRole et getAuthType sont des méthodes de l'interface javax.servlet.http.HttpServletRequest.

authenticate

Remarque : Les méthodes de sécurité de servlet login et logout sont nouvelles pour Java™ Servlet 3.0 dans cette édition de WebSphere Application Server.

La méthode authenticate authentifie un utilisateur à l'aide du mécanisme de connexion de conteneur WebSphere Application Server configuré pour le contexte du servlet.

La syntaxe de la méthode authenticate est la suivante :
boolean authenticate(HttpServletResponse response))
L'exemple précédent utilise l'élément suivant :
response
HttpServletResponse associé à HttpServletRequest.

La méthode authenticate renvoie true lorsque l'authentification a été établie ou qu'elle a abouti.

La méthode authenticate renvoie false si l'authentification est incomplète et que le mécanisme de connexion sous-jacent a validé, dans la réponse, le message et le code d'état HTTP à renvoyer à l'utilisateur.

Une exception java.io.IOException est émise si une erreur survient lors de l'écriture de la réponse.

Une exception ServletException est émise si l'authentification a échoué et que l'appelant est chargé du traitement de l'erreur (par exemple, le mécanisme de connexion sous-jacent n'a pas établi le message et le code d'état HTTP à renvoyer à l'utilisateur).

Eviter les incidents Eviter les incidents: Lorsque la méthode authenticate est appelée :
  • WebSphere Application Server renvoie le code HTTP 401 à un client.
  • La méthode dépend du mécanisme de connexion de conteneur WebSphere Application Server qui est configuré pour le contexte de servlet. Par exemple, si une connexion par formulaire est définie pour ce servlet, vous devez entrer un nom d'utilisateur et un mot de passe. Le client envoie l'ID utilisateur et le mot de passe à WebSphere Application Server en vue de l'authentification.
Important : Vérifiez que la méthode authenticate renvoie true avant d'utiliser le nouveau sujet pour appeler un autre service. Par exemple :
Boolean authResultTrue = req.authenticate(response);
		if (!authResultTrue) {
	return;
} else {
	// Use the new invocation subject to call other services.
	      }			
 
gotcha

login

La méthode login authentifie un utilisateur auprès de WebSphere Application Server à l'aide d'un ID utilisateur et d'un mot de passe. Si l'authentification réussit, elle crée un sujet d'utilisateur sur l'unité d'exécution et des cookies LTPA (Lightweight Third Party Authentication) (si le protocole SSO est activé).

La syntaxe de la méthode login est la suivante :
login(java.lang.String username, java.lang.String password)
L'exemple précédent utilise les éléments suivants :
nom d'utilisateur
Valeur de chaîne qui correspond à l'identificateur de connexion de l'utilisateur.
mot de passe
Mot de passe de l'utilisateur.

Une exception ServletException est émise si le mécanisme de connexion configuré ne prend pas en charge l'authentification par nom d'utilisateur et mot de passe, si une identité a déjà été authentifiée (avant l'appel de la méthode login) ou si la validation du nom d'utilisateur et du mot de passe indiqués échoue.

Remarque : Vous pouvez associer la propriété personnalisée de sécurité com.ibm.websphere.security.webAlwaysLogin à la valeur true pour authentifier l'application WebSphere avec un nom d'utilisateur et un mot de passe, même si elle est déjà authentifiée.

Pour plus d'informations sur la modification des propriétés personnalisées de sécurité, lisez la rubrique sur la modification d'une propriété personnalisée existante dans une configuration de sécurité globale ou dans une configuration de domaine de sécurité.

Remarque : La méthode login utilise toujours l'ID utilisateur et le mot de passe pour procéder à l'authentification auprès de WebSphere Application Server ainsi que les informations SSO présentes dans HttpServletRequest.
Eviter les incidents Eviter les incidents: Les méthodes authenticate et login définissent le sujet d'appel comme nouveau sujet. Si le sujet de l'appelant est nul, c'est le sujet de l'appelant qui est défini comme nouveau sujet. Si le sujet de l'appelant n'est pas nul, il n'est pas défini comme nouveau sujet.

Etant donné que les méthodes authenticate et login définissent le sujet d'appel comme nouveau sujet, l'élément RunAs défini par l'attribut run-As dans le descripteur de déploiement, l'annotation de sécurité ou l'annotation dynamique est ignoré.

gotcha

logout

La méthode logout déconnecte l'utilisateur de WebSphere Application Server et invalide la session HTTP. Au cours de ce processus, WebSphere Application Server exécute les opérations suivantes :
  • Il efface les cookies LTPA si SSO est activé.
  • Il invalide la session HTTP.
  • Il supprime l'utilisateur du cache d'authentification.
  • Il supprime le sujet d'utilisateur de l'unité d'exécution.
  • Il efface les sujets d'appelant et d'appel.
  • Il associe le type d'authentification à la valeur null.

Après la déconnexion, l'accès à une ressource Web protégée requiert une nouvelle authentification et les méthodes getUserPrincipal, getRemoteUser et getAuthType renvoient la valeur null.

La syntaxe de la méthode logout est la suivante :
logout()

Une exception ServletException est émise si la déconnexion échoue.

Types d'événement d'audit pour les méthodes authenticate, login et logout

Pour auditer les méthodes authenticate, login et logout, vous devez créer ou étendre certains fichiers de types d'événement d'audit. Ces types d'événements ne figurent pas dans les fichiers de types d'événement par défaut.

Tableau 1. Types d'événement d'audit pour les méthodes authenticate, login et logout.

Les types d'événement d'audit requis pour les méthodes authenticate, login et logout sont :

Méthode Nom de l'événement d'audit Résultat d'audit de l'événement
authenticate/login SECURITY_AUTHN SUCCESS ou FAILURE
logout SECURITY_AUTHN_TERMINATE SUCCESS
logout SECURITY_AUTHN_TERMINATE FAILURE

isUserInRole

String role name) : Renvoie la valeur true si le rôle de sécurité indiqué a été affecté à l'utilisateur distant. Si aucun rôle n'a été affecté à l'utilisateur distant ou si aucun utilisateur n'est authentifié, le valeur false est renvoyée.

getRemoteUser

La méthode getRemoteUser renvoie la connexion de l'utilisateur à l'origine de la demande si l'utilisateur a été authentifié. Si l'utilisateur n'a pas été authentifié, la méthode getRemoteUser renvoie null.

getAuthType

La méthode getAuthType renvoie le nom du schéma d'authentification utilisé pour protéger le servlet. Si le servlet n'est pas protégé, la méthode getAuthType renvoie la valeur null.

Les schémas d'authentification utilisés sont :
FORM
lorsque l'authentification reposant sur un formulaire est appliquée.
BASIC
lorsque l'authentification de base est appliquée.
CLIENT_CERT
lorsque l'authentification par certificat client est appliquée.
Remarque :
Pour les méthodes getRemoteUser et getAuthType, les données renvoyées dépendent de l'activation de la sécurité sur le serveur d'applications sur lequel le servlet est déployé. Les possibilités sont les suivantes :
  • Si la sécurité de l'application est activée et qu'un servlet est protégé, la méthode getRemoteUser renvoie la connexion et la méthode getAuthType renvoie le schéma d'authentification configuré.
  • Si la sécurité de l'application n'est pas activée, les deux méthodes renvoient la valeur null.

Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rsec_secgetru
Nom du fichier : rsec_secgetru.html