Remplacement de la méthode d'authentification du consommateur de jeton UsernameToken à l'aide d'un module de connexion JAAS empilé
Par défaut, le consommateur de jeton UsernameToken de la sécurité des services Web, le module UNTConsumeLoginModule, valide toujours le nom d'utilisateur et le mot de passe contenus dans le jeton par rapport au registre WebSphere. Vous pouvez utiliser les SPI fournies par GenericSecurityTokenFactory pour ignorer cette méthode d'authentification.
Pourquoi et quand exécuter cette tâche
Si vous souhaitez remplacer la méthode d'authentification utilisée par le module UNTConsumeLoginModule, vous devez fournir votre propre module de connexion JAAS personnalisé pour procéder à l'authentification. Le module de connexion personnalisé est empilé sous le module UNTConsumeLoginModule dans une configuration JAAS personnalisée. Le module UNTConsumeLoginModule consomme et valide le XML du jeton. La validation des valeurs fournies pour le nom d'utilisateur et le mot de passe est reportée dans le module de connexion empilé personnalisé.
L'utilisation du module UNTConsumeLoginModule signifiant que le nom d'utilisateur et le mot de passe seront authentifiés, davantage d'exigences sont placées sur un module de connexion empilé qui a l'intention d'effectuer cette fonction que sur des modules de connexion destinés à n'offrir qu'une fonctionnalité de jeton dynamique.
Pour indiquer au module UNTConsumeLoginModule qu'il ne doit pas authentifier le nom d'utilisateur et le mot de passe, vous devez définir la propriété suivante sur le gestionnaire de rappel configuré :
com.ibm.wsspi.wssecurity.token.UsernameToken.authDeferred=true
Comme la plupart des modules de connexion WS-Security, le module UNTConsumeLoginModule place toujours le jeton consommé dans la mappe des états partagés à laquelle tous les modules de connexion de la pile ont accès. Si authDeferred=true est spécifié, dans la phase de validation, le module UNTConsumeLoginModule s'assure que l'objet UsernameToken placé à l'origine à l'état partagé a été placé dans un autre emplacement à l'état partagé. Si cet objet UsernameToken est introuvable, une exception LoginException se produit. Par conséquent, vous ne pouvez pas seulement spécifier authDeferred=true sur le gestionnaire de rappel sans qu'un module de connexion associé ne retourne le jeton à l'état partagé.