Insertion des attributs SAML à l'aide des API WSS

Vous pouvez insérer des attributs personnalisés dans les jetons SAML auto-générés à l'aide du modèle de programmation JAX-WS (Java™ XML-Based Web Services) et API Web Services Security (WSS).

Avant de commencer

On considère ici que vous connaissez le modèle de programmation JAX-WS, les API WSS, les concepts de SAML et l'utilisation des ensembles de règles pour configurer et administrer les paramètres des services Web. Procédez comme suit avant de commencer cette tâche :
  • Informez-vous sur la propagation des jetons SAML bearer (porteurs) auto-générés à l'aide des API WSS.
  • Consultez la documentation sur la propagation des jetons sender-vouches SAML auto-générés en utilisant les API WSS avec une protection de niveau de message.
  • Consultez la documentation sur la propagation des jetons sender-vouches SAML auto-générés en utilisant les API WSS avec une protection de transport SSL.
  • Consultez la documentation sur la propagation des jetons holder-of-key SAML auto-générés avec une clé symétrique à l'aide des API WSS.
  • Consultez la documentation sur la propagation des jetons holder-of-key SAML auto-générés avec une clé asymétrique à l'aide des API WSS.

Pourquoi et quand exécuter cette tâche

Cette tâche montre un exemple de code qui insère les attributs personnalisés dans des jetons de sécurité SAML auto-générés. Cet exemple particulier utilise la méthode de confirmation de sujet de porteur. Vous pouvez ajouter des attributs aux jetons de sécurité SAML et le même code peut être utilisé avec d'autres méthodes de confirmation de sujet.

Procédure

Insérez les attributs personnalisés lors de la création des jetons de sécurité SAML, par exemple :
import com.ibm.websphere.wssecurity.wssapi.token.SecurityToken;
import com.ibm.websphere.wssecurity.callbackhandler.SAMLGenerateCallbackHandler;
import com.ibm.websphere.wssecurity.wssapi.token.SAMLToken;
import com.ibm.wsspi.wssecurity.core.token.config.WSSConstants;
import com.ibm.wsspi.wssecurity.saml.config.SamlConstants;
import com.ibm.wsspi.wssecurity.saml.data.SAMLAttribute;

WSSFactory factory = WSSFactory.getInstance();
HashMap<Object, Object> map = new HashMap<Object, Object>();
map.put(SamlConstants.CONFIRMATION_METHOD, "Bearer");
map.put(SamlConstants.Token_REQUEST, "issue");
map.put(SamlConstants.TOKEN_TYPE, WSSConstants.SAML.SAML20_VALUE_TYPE);
map.put(SamlConstants.SAML_NAME_IDENTIFIER, "Alice");
map.put(SamlConstants.SIGNATURE_REQUIRED, "true");
ArrayList<SAMLAttribute> al = new ArrayList<SAMLAttribute>();
String groups[] = {"IBMer", "Texan"};
SAMLAttribute sattribute = new SAMLAttribute("Membership", groups, null,null, null, null);
al.add(sattribute);
String gender[] = {"Female"};
sattribute = new SAMLAttribute("Gender", gender, null,null, null, null);
al.add(sattribute);
map.put(SamlConstants.SAML_ATTRIBUTES, al);
SAMLGenerateCallbackHandler callbackHandler = new SAMLGenerateCallbackHandler(map);	
SecurityToken samlToken = factory.newSecurityToken(SAMLToken.class, callbackHandler, "system.wss.generate.saml");

Résultats

Vous avez inséré des attributs personnalisés à un jeton de sécurité SAML.

Exemple

L'exemple suivant montre les attributs personnalisés dans l'assertion SAML :
<saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
				              Version="2.0"
                       ID="_E62A1CA3C2F21D9A9B1287772824570"
                       IssueInstant="2010-10-22T18:40:24.531Z">
    <saml2:Issuer>example.com</samls2:Issuer>
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    ...
    </ds:Signature>
    <saml2:Subject>
        <saml2:NameID>Alice</saml2:NameID>
        <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"></saml2:SubjectConfirmation>
    </saml2:Subject>
    <saml2:Conditions NotBefore="2010-10-22T18:40:24.531Z"
		                  NotOnOrAfter="2010-10-22T19:40:24.531Z">
    </saml2:Conditions>
    <saml2:AttributeStatement>
        <saml2:Attribute Name="Membership">
            <saml2:AttributeValue>IBMer</saml2:AttributeValue>
            <saml2:AttributeValue>Texan</saml2:AttributeValue>
        </saml2:Attribute>
        <saml2:Attribute Name="Gender">
            <saml2:AttributeValue>Female</saml2:AttributeValue>
        </saml2:Attribute>
    </saml2:AttributeStatement>
</saml2:Assertion>

Que faire ensuite

Fusionnez le code avec l'exemple de code répertorié dans la rubrique concernant la propagation des jetons porteurs SAML auto-générés en utilisant les API WSS afin de générer des jetons de sécurité SAML. Vous pouvez voir des attributs SAML dans les assertions SAML.

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_configsaml_insert_attributes_usingwssapi
Nom du fichier : twbs_configsaml_insert_attributes_usingwssapi.html