Vous pouvez utiliser l'infrastructure de connexion de service JAAS (Java™ Authentication
and Authorization Service) pour créer une configuration de connexion JAAS utilisable
pour établir une connexion à une vérification d'identité sous Liberty.
Pourquoi et quand exécuter cette tâche
En configurant la vérification d'identité avec une étape de validation des relations de confiance,
vous pouvez faire en sorte qu'un application utilise votre configuration de connexion JAAS pour
se connecter en effectuant une vérification d'identité à l'aide d'un programme. Voir IdentityAssertionLoginModule pour
plus de détails.
Procédure
- Déléguez la validation des relations de confiance à un point de plug-in implémenté par l'utilisateur.
La validation des relations de confiance est effectuée par un module de connexion personnalisé. Ce module de connexion personnalisé procède à la validation des relations de confiance requise, puis définit les informations de l'identité et des relations de confiance dans l'état partagé en vue de leur transmission au module de connexion par vérification d'identité. Une mappe est requise dans la clé dans l'état partagé suivante :
com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.state
Si l'état manque, un problème
WSLoginFailedException est signalé par la classe
IdentityAssertionLoginModule.
La mappe dans la clé de l'état partagé doit inclure une clé de confiance dont le nom de clé est le suivant :
com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.trust
Si cette clé a pour valeur
true, la confiance est établie.
Si la clé a pour valeur
false, la confiance n'est pas établie et la classe
IdentityAssertionLoginModule crée un problème
WSLoginFailedException.
La mappe dans la clé de l'état partagé doit aussi définir l'une des ressources suivantes :
Si un principal et un certificat sont fournis, le principal est utilisé et un
avertissement est généré.
- Créez une configuration JAAS pour les connexions d'application. Cette configuration JAAS contiendra le module de connexion personnalisé, dans lequel l'utilisateur implémente la
validation de confiance, ainsi que la classe IdentityAssertionLoginModule.
Définissez ensuite une configuration de connexion en ajoutant le code suivant
au fichier server.xml :
<jaasLoginContextEntry id="CustomIdentityAssertion" name="CustomIdentityAssertion"
loginModuleRef="customIdentityAssertion,identityAssertion" />
<jaasLoginModule id="customIdentityAssertion"
className="com.ibm.ws.security.authentication.IdentityAssertionLoginModule"
controlFlag="REQUIRED" libraryRef="customLoginLib"/>
<library id="customLoginLib">
<fileset dir="${server.config.dir}" includes="IdentityAssertionLoginModule.jar"/>
</library>
Cette configuration JAAS est utilisée par l'application afin d'effectuer une vérification d'identité.
- Procédez à la vérification d'identité programmable. Un programme peut maintenant utiliser
la configuration de connexion JAAS pour vérifier les identités à l'aide d'un programme. Ce programme d'application peut créer un contexte de connexion pour la configuration JAAS créée à l'étape 2,
puis se connecter à ce contexte de connexion avec l'identité revendiquée. Si la connexion aboutit, l'identité peut être définie dans le processus d'exécution en cours. L'exemple suivant illustre ce processus :
NameCallback handler = new NameCallback(new MyPrincipal("Joe"));
LoginContext lc = new LoginContext("customIdentityAssertion", handler);
lc.login(); //assume successful
Subject s = lc.getSubject();
WSSubject.setRunAsSubject(s);
// From here on , the runas identity is "Joe"
Remarque : La classe MyPrincipal est l'implémentation de l'interface
java.security.Principal dans l'exemple.
Résultats
Avec l'infrastructure de connexion JAAS et deux modules de connexion que vous implémentez,
vous pouvez créer une configuration de connexion JAAS que vous pouvez utiliser pour vous connecter à une vérification d'identité.