Propagation des jetons SAML

Il existe plusieurs méthodes de propagation pour inclure des jetons SAML dans des messages de service Web sortants.

Pourquoi et quand exécuter cette tâche

Un client de services Web peut inclure deux types de jeton dans des messages de services Web sortants :
  • Les jetons SAML d'origine reçus dans les messages de services Web entrants.
  • Des jetons SAML auto-générés.
Les jetons SAML peuvent être générés à l'aide des attributs des jetons SAML d'origine, ou de ceux du nom d'utilisateur WSPrincipal du sujet RunAs. La configuration des règles des services Web détermine quels jetons sont propagés. Vous pouvez passer outre les règles configurées en programmant l'insertion dans l'objet Axis2 RequestContext des jetons SAML à propager.

Quatre méthodes de propagation sont disponibles. Ce tableau récapitule les méthodes de propagation et les options de liaison associées :

Tableau 1. Méthodes de propagation et options de liaison associées. Faites appel au mécanisme de propagation pour inclure les jetons SAML dans les messages des services Web.
Méthode de propagation des jetons SAML Option de liaison Caractéristiques de l'implémentation
Propagation du jeton SAML d'origine. La valeur de l'option de liaison tokenRequest est propagation. Le jeton SAML d'origine est envoyé avec WS-Security du serveur l'ayant reçu vers les autres serveurs.
Propagez le nom de sécurité de l'utilisateur, le nom de sécurité unique, les ID de groupe et le nom de domaine de sécurité. La valeur de l'option de liaison tokenRequest est issueByWSCredential. Se substitue à l'implémentation système par défaut.

Le jeton SAML auto-généré contient le nom de sécurité de l'utilisateur, le nom de sécurité unique, les ID de groupe et le nom de domaine de sécurité qui sont spécifiés par l'objet WSCredential dans le contexte de sécurité de l'utilisateur.

Propagation de l'identité et des attributs du jeton SAML. Aucune option de liaison n'est définie. Implémentation système par défaut.

Le serveur génère lui-même un nouveau jeton SAML contenant les attributs, la méthode d'authentification et l'élément NameIdentifier ou SAML NameID du jeton d'origine, et l'envoie aux serveurs en aval avec WS-Security. Le nom et le certificat signataire de l'émetteur du nouveau jeton, ainsi que sa durée de vie, sont définis par la configuration du fournisseur SAML.

Propagation de WSPrincipal. La valeur de l'option de liaison tokenRequest est issueByWSPrincipal.
Pour les utilisateurs en transition Pour les utilisateurs en transition: A partir de la version 8, la spécification de la valeur issueByWSPrincipal ou issueByWSCredential génère le même résultat. Si vous n'utilisez pas déjà la valeur issueByWSPrincipal, il est recommandé d'utiliser la valeur issueByWSCredential. Si vous utilisez déjà la valeur issueByWSPrincipal, il est recommandé de la remplacer par la valeur issueByWSCredential. trns
Se substitue à l'implémentation système par défaut.

Le jeton SAML auto-généré contient les données WSPrincipal dans le sujet RunAs. Les données sont stockées en tant que NameIdentity ou NameID, sans que rien ne soit copié du jeton SAML d'origine, même si celui-ci existe dans le sujet.

Propagation programmée d'un jeton SAML pré-existant. Insère le jeton SAML à propager dans RequestContext en utilisant la propriétécom.ibm.wsspi.wssecurity.core.token.config.WSSConstants.JETONSAML_DANS_MESSAGECONTEXT. Se substitue à toutes les autres options de liaison existantes.

Procédure

  1. Propagez le jeton SAML d'origine en définissant dans le fichier bindings.xml la valeur propagation pour l'option de liaison tokenRequest, comme indiqué dans la procédure. Cette méthode envoie le jeton SAML d'origine vers les autres serveurs à l'aide de WS-Security. La propagation n'aboutit que si le sujet RunAs contient un jeton SAML valide. Le jeton extrait le jeton SAML du sujet RunAs dans le contexte de sécurité en cours et valide les conditions qui suivent. Si l'une de ces conditions est invalide, l'environnement d'exécution WS-Security ne propage pas le jeton SAML, et la demande de propagation échoue.
    • Le jeton SAML n'est pas arrivé à expiration, et l'heure d'expiration se trouve dans la fenêtre définie par le paramètre notOnOrAfter.
    • La définition de ConfirmationMethod dans le jeton SAML est identique à celle de l'option confirmationMethod définie dans la configuration du générateur de jetons.
    • La valeur de ValueType dans le jeton SAML est identique à celle de la configuration du générateur de jetons.

    Procédez comme suit pour définir la valeur appropriée pour l'option de liaison tokenRequest. Dans cette procédure, on suppose qu'une application client de services Web, JaxWSServicesSamples, est déployée et que le modèle de liaison client bearer SAML est connecté.

    1. Cliquez sur Applications > Types d'application > Applications d'entreprise WebSphere > JaxWSServicesSamples > Liaisons et ensembles de règles de client de service > Exemple de client Bearer Saml > WS-Security > Authentification et protection.
    2. Cliquez sur gen_saml11token dans la table des jetons d'authentification.
    3. Cliquez sur Gestionnaire d'appel.
    4. Ajoutez la propriété personnalisée tokenRequest et affectez-lui la valeur propagation.
  2. Pour propager l'identité et les attributs du jeton SAML à l'aide d'un jeton auto-généré, modifiez l'élément tokenGenerator sortant dans le fichier bindings.xml. Cette méthode envoie les attributs, l'élément NameIdentifier ou NameID et la méthode d'authentification du jeton SAML d'origine vers les autres serveurs à l'aide de WS-Security. Si le sujet ne contient pas de jeton SAML, le serveur utilise WSPrincipal, stocké en tant que NameIdentifier ou NameID, pour créer un jeton auto-généré. Cette méthode de propagation est l'implémentation système par défaut. Dans cette méthode, l'option de liaison n'est pas définie.
    Les limitations suivantes s'appliquent au fichier bindings.xml lorsque vous utilisez cette méthode de propagation :
    • Ne définissez pas l'option de liaison tokenRequest dans le fichier bindings.xml.
    • Ne définissez pas l'option de liaison stsURI dans le fichier bindings.xml, ou affectez-lui la valeur : www.websphere.ibm.com/SAML/Issuer/Self.
  3. Pour propager WSPrincipal, modifiez le fichier bindings.xml comme indiqué dans la procédure qui suit. Affectez la valeur issueByPrincipal à l'option de liaison tokenRequest dans le fichier bindings.xml. Avec cette méthode, le jeton SAML auto-généré est toujours basé sur WSPrincipal, même si le sujet contient un jeton SAML. Le nouveau jeton SAML contient le nom d'utilisateur WSPrincipal en tant que NameId ou NameIdentifier. Le jeton ne contient aucun autre attribut des objets WSPrincipal ou WSCredential.
    La limitation suivante s'applique au fichier bindings.xml lorsque vous utilisez cette méthode de propagation :
    • Ne définissez pas l'option de liaison stsURI dans le fichier bindings.xml, ou affectez-lui la valeur www.websphere.ibm.com/SAML/Issuer/Self.

    Procédez comme suit pour définir la valeur appropriée pour l'option de liaison tokenRequest. Dans cette procédure, on suppose qu'une application client de services Web, JaxWSServicesSamples, est déployée et que le modèle de liaison client bearer SAML est connecté.

    1. Cliquez sur Applications > Types d'application > Applications d'entreprise WebSphere > JaxWSServicesSamples > Liaisons et ensembles de règles de client de service > Exemple de client Bearer Saml > WS-Security > Authentification et protection.
    2. Cliquez sur gen_saml11token dans la table des jetons d'authentification.
    3. Cliquez sur Gestionnaire d'appel.
    4. Ajoutez la propriété personnalisée tokenRequest et affectez-lui la valeur issueByPrincipal.
  4. Pour propager un jeton SAML pré-existant par l'insertion de SAMLToken dans RequestContext, procédez comme suit. Faites appel à cette méthode pour envoyer à des serveurs en aval, à l'aide de WS-Security, un jeton SAML que vous avez créé. La propagation est déclenchée automatiquement lorsque l'environnement d'exécution de WS-Security détecte un jeton SAML dans RequestContext. Le jeton pré-existant se substitue à toutes les options de liaison existantes. Pour utiliser cette méthode de propagation, sauvegardez le jeton SAML existant dans RequestContext avec com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.JETONSAML_DANS_MESSAGECONTEXT comme clé, comme indiqué dans la procédure qui suit.
    1. Générez un jeton SAML avec la méthode SAMLToken samlToken = <type de jeton>, par exemple :
      SAMLToken samlToken = samlFactory.newSAMLToken(cred, reqData, samlIssuerCfg);
    2. Sauvegardez SAMLToken dans RequestContext, par exemple :
      Map requestContext = ((BindingProvider)port).getRequestContext();
         requestContext.put("com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.SAMLTOKEN_IN_MESSAGECONTEXT", samlToken );
    Cette option de propagation peut co-exister avec d'autres méthodes de propagation, et se substitue aux autres méthodes. Si le jeton SAML de RequestContext est arrivé à expiration, ou si le délai d'expiration du jeton est inférieur au délai en cours augmenté de la marge de sécurité du cache, l'environnement d'exécution de WS-Security ignore le jeton SAML et utilise l'une des trois autres méthodes de propagation configurées dans le fichier bindings.xml. Pour éviter d'utiliser les trois autres méthodes de propagation, ajoutez l'option de liaison suivante aux propriétés personnalisées, sous le gestionnaire d'appel, dans la configuration TokenGenerator : failOverToTokenRequest = false.
  5. Pour propager les appartenances de groupe d'un utilisateur, le nom de sécurité unique et le nom de domaine dans l'objet com.ibm.websphere.security.cred.WSCredential, modifiez le fichier bindings.xml comme indiqué dans les différentes étapes. Définissez l'option de liaison tokenRequest sur la valeur issueByWSCredential, dans le fichier bindings.xml. Avec cette méthode, le jeton SAML auto-généré est toujours basé sur WSCredential, même si le sujet contient un jeton SAML.

    Le nouveau jeton SAML 1.1 contient les assertions suivantes :

    • L'élément NameIdentifier contient la valeur SecurityName de WSCredential avec l'élément NameQualifier défini sur le nom de domaine de WSCredential. Le SecurityName est obtenu en appelant la méthode WSCredential.getSecurityName(). Le nom de domaine est obtenu en appelant la méthode WSCredential.getRealmName().
    • Tous les attributs ont un AttributeNamespace défini avec une valeur de com.ibm.websphere.security.cred.WSCredential.
    • L'attribut GroupIds contient tous les noms de groupes auxquels un utilisateur appartient. Les noms de groupes sont obtenus en appelant la méthode WSCredential.getGroupIds().
    • L'attribut UniqueSecurityName contient le nom de sécurité unique, obtenu en appelant la méthode WSCredential.getUniqueSecurityName().
    • Eventuellement, vous pouvez affecter le nom de domaine à partir de WSCredential en ajoutant la propriété personnalisée includeRealmName=true au gestionnaire d'appel.

    Le nouveau jeton SAML 2.0 contient les assertions suivantes :

    • L'élément NameID contient la valeur SecurityName de WSCredential avec l'élément NameQualifier défini sur le nom de domaine de WSCredential. Le SecurityName est obtenu en appelant la méthode WSCredential.getSecurityName(). Le nom de domaine est obtenu en appelant la méthode WSCredential.getRealmName().
    • Tous les attributs ont un NameFormat défini avec une valeur de com.ibm.websphere.security.cred.WSCredential.
    • L'attribut GroupIds contient tous les noms de groupes auxquels un utilisateur appartient. Les noms de groupes sont obtenus en appelant la méthode WSCredential.getGroupIds().
    • L'attribut UniqueSecurityName contient le nom de sécurité unique, obtenu en appelant la méthode WSCredential.getUniqueSecurityName().
    • Eventuellement, vous pouvez affecter le nom de domaine à partir de WSCredential en ajoutant la propriété personnalisée includeRealmName=true au gestionnaire d'appel.
    La limitation suivante s'applique au fichier bindings.xml lorsque vous utilisez cette méthode de propagation :
    • Ne définissez pas l'option de liaison stsURI dans le fichier bindings.xml.
    Procédez comme suit pour définir la valeur appropriée pour l'option de liaison tokenRequest. Dans cette procédure, on suppose qu'une application client de services Web, JaxWSServicesSamples, est déployée et que la liaison Exemple de client Bearer Saml est connectée.
    1. Cliquez sur Applications > Types d'application > Applications d'entreprise WebSphere > JaxWSServicesSamples > Liaisons et ensembles de règles de client de service > Exemple de client Bearer Saml > WS-Security > Authentification et protection.
    2. Cliquez sur gen_saml11token dans la table des jetons d'authentification.
    3. Cliquez sur Gestionnaire d'appel.
    4. Ajoutez la propriété personnalisée tokenRequest et définissez la valeur de propriété sur issueByWSCredential.
    L'exemple suivant illustre l'instruction NameIdentifier et Attribute à partir d'une assertion SAML 1.1 auto-générée basée sur WSCredential.
    <saml:AttributeStatement>
        <saml:Subject>
            <saml:NameIdentifier NameQualifier="ldap.acme.com:9080">uid=alice,dc=acme,dc=com</saml:NameIdentifier>
            <saml:SubjectConfirmation>
                <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod>
            </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:Attribute AttributeName="UniqueSecurityName" AttributeNamespace="com.ibm.websphere.security.cred.WSCredential">
            <saml:AttributeValue>uid=alice,dc=acme,dc=com</saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute AttributeName="GroupIds" AttributeNamespace="com.ibm.websphere.security.cred.WSCredential">
            <saml:AttributeValue>cn=development,dc=acme,dc=com</saml:AttributeValue>
            <saml:AttributeValue>cn=deployment,dc=acme,dc=com</saml:AttributeValue>
            <saml:AttributeValue>cn=test,dc=acme,dc=com</saml:AttributeValue>
        </saml:Attribute>
    </saml:AttributeStatement>
    L'exemple suivant illustre l'instruction NameID et Attribute à partir d'une assertion SAML 2.0 auto-générée basée sur WSCredential.
    <saml2:AttributeStatement>
        <saml2:Attribute Name="UniqueSecurityName"
               NameFormat="com.ibm.websphere.security.cred.WSCredential">
            <saml2:AttributeValue>uid=alice,dc=acme,dc=com</saml2:AttributeValue>
        <saml2:Attribute>
        <saml2:Attribute AttributeName="GroupIds"
               NameFormat="com.ibm.websphere.security.cred.WSCredential">
            <saml2:AttributeValue>cn=development,dc=acme,dc=com</saml2:AttributeValue>
            <saml2:AttributeValue>cn=deployment,dc=acme,dc=com</saml2:AttributeValue>
            <saml2:AttributeValue>cn=test,dc=acme,dc=com</saml2:AttributeValue>
        </saml2:Attribute>
    </saml2:AttributeStatement>
    <saml2:NameID NameQualifier="ldap.acme.com:9060">alice</saml2:NameID>

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_propagatesamltoken
Nom du fichier : twbs_propagatesamltoken.html