Développement d'applications de services Web basés sur JAX-WS pour l'extraction des jetons de sécurité

Dans le cas d'une application serveur, l'application sert de destinataire des demandes et de générateur de réponses. Elle est déployée et s'exécute dans le conteneur Java™ EE (Java Platform, Enterprise Edition). Le composant destinataire de la sécurité des Services Web stocke les jetons de sécurité qu'il reçoit dans le sujet JAAS (Java Authentication and Authorization Service) de l'unité d'exécution en cours. Vous pouvez extraire les jetons de sécurité à partir du sujet JAAS qui est conservé sous forme d'unité d'exécution locale dans le conteneur.

Pourquoi et quand exécuter cette tâche

Ces informations ne s'appliquent qu'aux services Web JAX-WS (Java API for XML-based Web Services).

Les gestionnaires de sécurité sont responsables de la propagation des jetons de sécurité. Ces jetons de sécurité sont imbriqués dans l'en-tête de sécurité SOAP et transmis aux serveurs en aval. Ils sont encapsulés dans les classes d'implémentation de l'interface com.ibm.wsspi.wssecurity.auth.token.Token. Vous pouvez extraire les données des jetons de sécurité à partir d'une application serveur ou d'une application client.

Effectuez les opérations ci-dessous pour extraire les données des jetons de sécurité à partir d'une application serveur.

Procédure

  1. Obtenez le sujet JAAS de l'unité d'exécution en cours à l'aide de l'API WSSubject. Si vous activez la sécurité Java 2 dans le panneau Sécurité globale de la console d'administration, l'accès au sujet JAAS est refusé si le code de l'application ne dispose pas des droits javax.security.auth.AuthPermission("wssecurity.getCallerSubject"). L'exemple de code suivant illustre l'obtention du sujet JAAS :
    javax.security.auth.Subject subject;
    
    try {
    subject = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
    } catch (com.ibm.websphere.security.WSSecurityException e) {
      …
    }
  2. Obtenez un ensemble de justificatifs privés à partir du sujet. Pour plus d'informations, consultez les explications relatives à la classe com.ibm.websphere.security.auth.WSSubject d'API dans le centre de documentation. Pour accéder à ces informations dans le centre de documentation, cliquez sur Référence > Développeur > Documentation sur les API > Interfaces de programme d'application. Dans l'article relatif aux interfaces de programmation d'applications, sélectionnez com.ibm.websphere.security.auth > WSSubject.
    Avertissement : Lorsque la sécurité Java 2 est activée, il se peut que vous deviez utiliser la classe AccessController pour éviter une violation de la sécurité due à la manipulation d'objets de sécurité dans le conteneur Java EE.
    L'exemple de code suivant illustre la définition de la classe AccessController et l'obtention de justificatifs privés :
    Set s = (Set) AccessController.doPrivileged(new PrivilegedAction() {
       public Object run() {
       return subj.getPrivateCredentials();
       }
          });
  3. Recherchez la classe des jetons cible dans les justificatifs privés. Vous pouvez rechercher la classe des jetons cible à l'aide de l'interface java.util.Iterator. L'exemple ci-après illustre l'extraction d'un jeton de nom d'utilisateur à partir de l'en-tête de sécurité en fonction d'une certaine valeur d'ID de jeton. Vous pouvez également utiliser d'autres appels de méthode pour extraire les jetons de sécurité. Pour plus d'informations, consultez les documents d'API relatifs à l'interface com.ibm.wsspi.wssecurity.auth.token.Token ou aux classes de jeton personnalisées.
    com.ibm.wsspi.wssecurity.auth.token.UsernameToken unt;
    Iterator it = s.iterator();
    while (it.hasNext()) {
      Object obj = it.next();
      if (obj != null &&
    obj instanceOf com.ibm.wsspi.wssecurity.auth.token.UsernameToken) {
        unt =(com.ibm.wsspi.wssecurity.auth.token.UsernameToken) obj;
    if (unt.getId().equals(“…”)) break;
    else continue;
      }
    }

Résultats

Si ces opérations sont terminées, vous avez extrait les jetons de sécurité à partir du sujet JAAS dans une application serveur.

Icône indiquant le type de rubrique Rubrique de tâche



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=twbs_retrievetokensrvr_jaxws
Nom du fichier : twbs_retrievetokensrvr_jaxws.html