Substitution du sujet RunAs dans l'unité d'exécution pour JAAS
Pour étendre la fonction que procurent les API JAAS (Java™ Authentication and Authorization Service), vous pouvez attribuer au sujet RunAs ou au sujet de l'appel une entrée valide différente qui est utilisée pour les demandes sortantes sur cette unité d'exécution.
Avant de commencer
- permission javax.security.auth.AuthPermission "wssecurity.getRunAsSubject"
- permission javax.security.auth.AuthPermission "wssecurity.getCallerSubject"
- permission javax.security.auth.AuthPermission "wssecurity.setRunAsSubject"
Pourquoi et quand exécuter cette tâche
Avec cette extension, vous bénéficiez de la souplesse permettant d'associer le sujet à tous les appels éloignés sur cette unité d'exécution que vous utilisiez ou non une méthode WSSubject.doAs pour associer le sujet à l'action éloignée.
Un développeur d'applications
peut utiliser la méthode WSSubject.doAs pour établir un sujet JAAS
authentifié par un module de connexion JAAS comme l'identité de sécurité active de l'exécution de WebSphere Application
Server à utiliser lors d'une action définie. WSSubject.doAs ne synchronise
l'identité de l'unité d'exécution que si elle est appelée dans le cadre d'un composant
configuré pour la synchronisation par rapport à l'unité d'exécution. Utilisée
avec l'option de synchronisation de l'application avec le système
d'exploitation, cette identité est définie sur l'unité d'exécution du système
d'exploitation pour la portée de cette action.
Procédure
Exemple
try { javax.security.auth.Subject runas_subject, caller_subject; runas_subject = com.ibm.websphere.security.auth.WSSubject.getRunAsSubject(); caller_subject = com.ibm.websphere.security.auth.WSSubject.getCallerSubject(); // set a new RunAs subject for the thread, overriding the one declaratively set com.ibm.websphere.security.auth.WSSubject.setRunAsSubject(caller_subject); // do some remote calls // restore back to the previous runAsSubject com.ibm.websphere.security.auth.WSSubject.setRunAsSubject(runas_subject); } catch (WSSecurityException e) { // log error } catch (Exception e) { // log error }