Ajout d'attributs et nouvelle signature de jetons SAML existants à l'aide de l'API

L'API de bibliothèque SAML peut être utilisée pour ajouter des attributs ou en supprimer d'un jeton SAML non chiffré, puis signer ou resigner le jeton SAML. Chaque fois que des actions sont effectuées pour modifier l'objet de jeton SAML, s'il existe déjà une signature numérique sur l'objet, la signature numérique existante est supprimée.

Pourquoi et quand exécuter cette tâche

La procédure ci-après décrit comment modifier un objet SAMLToken existant, puis appliquer une nouvelle signature numérique au jeton. Cette tâche ne montre pas comment obtenir l'objet SAMLToken existant. L'objet SAMLToken existant peut provenir d'un protocole SOAP entrant par le biais de l'état partagé LoginModule, d'une connexion unique Web SAML par le biais du sujet de sécurité de base, d'un service STS qui utilise le client d'accréditation ou d'un jeton auto-généré créé avec les API SAML.

Lorsque les API SAML initialisent les objets de configuration, la configuration est obtenue du fichier SamlIssuerConfig.properties. Vous pouvez choisir d'utiliser les paramètres du fichier SamlIssuerConfig.properties ou de les remplacer. Cette procédure explique comment remplacer tous les paramètres de ce fichier.

Procédure

  1. Clonez le jeton SAML existant.
    import java.util.ArrayList;
    import org.apache.axiom.om.OMElement;
    import com.ibm.websphere.wssecurity.wssapi.token.SAMLToken;
    import com.ibm.websphere.wssecurity.wssapi.token.SAMLTokenFactory;
    import com.ibm.wsspi.wssecurity.saml.config.ProviderConfig;
    import com.ibm.wsspi.wssecurity.saml.config.RequesterConfig;
    import com.ibm.wsspi.wssecurity.saml.data.SAMLAttribute;
    import com.ibm.wsspi.wssecurity.wssapi.OMStructure;
    ....
    
    //someSAMLToken correspond à l'objet SAMLToken existant
    
    SAMLTokenFactory samlFactory = null;
    
    //initialisation de la fabrique de jetons SAML souhaitée
    //samlFactory = SAMLTokenFactory.getInstance(SAMLTokenFactory.WssSamlV11Token11);
    samlFactory = SAMLTokenFactory.getInstance(SAMLTokenFactory.WssSamlV20Token11);
    
    //clonage éventuel de l'objet SAMLToken existant.
    SAMLToken mySamlToken = factory.newSAMLToken(someSamlToken);
  2. Ajoutez ou supprimez des attributs dans le jeton.
    //ajout d'un attribut
    SAMLAttribute sattribute1 = new SAMLAttribute("Purchases", new String[] {"TooMany"},  null, null, null, null);
    mySamlToken.addAttribute(sattribute1);
    
    //après ce premier élément addAttribute, il n'y aura pas de signature numérique dans le
    //XML du jeton.  La modification d'un jeton a invalidé la signature.
    
    //ajout d'une liste d'attributs
    SAMLAttribute sattribute2 = new SAMLAttribute("Address", new String[] {"Austin, Texas"},null,null,"IBM NameFormat","IBM FriendlyName");
    SAMLAttribute sattribute3 = new SAMLAttribute("Membership",new String[] {"Blue team", "Green Team"},null,null,null,null );
    
    ArrayList al = new ArrayList();
    al.add(sattribute2);
    al.add(sattribute3);
    
    mySamlToken.addAttribute(al);
    
    //suppression d'un attribut
    mySamlToken.deleteAttribute(sattribute3);
    ....
  3. Resignez le jeton SAML.
    RequesterConfig reqData = null;
    
    //initialisation de la configuration de demandeur souhaitée
    //reqData = samlFactory.newSenderVouchesTokenGenerateConfig();
    reqData = samlFactory.newBearerTokenGenerateConfig();
    
    //initialisation de l'objet de configuration de fournisseur avec un nom d'émetteur
    ProviderConfig samlIssuerCfg = samlFactory.newDefaultProviderConfig("myIssuer");
    
    //Ou conservation de l'émetteur existant en affectant à l'URI de l'émetteur la valeur null
    //samlIssuerCfg.setIssuerURI(null);
    
    //définition des informations sur le magasin de clés à utiliser avec la signature numérique dans l'objet de configuration de fournisseur
    KeyStoreConfig ksc = samlFactory.newKeyStoreConfig( "jks", "/myx509.ks", "myx509");
    samlIssuerCfg.setKeyStoreConfig(ksc);
    
    //définition des informations sur la clé à utiliser avec la signature numérique dans l'objet de configuration de fournisseur
    KeyInformationConfig kic = samlFactory.newKeyInformationConfig("mySignAlias", "password", "CN=ME");
    samlIssuerCfg.setKeyInformationConfig(kic);
    
    //création d'un objet SAMLToken correspondant à un clone signé du jeton en entrée
    SAMLToken myNewSamlToken = samlFactory.newSAMLToken(mySamlToken,reqData,samlIssuerCfg);
  4. Inspectez le XML du jeton SAML pour voir les modifications.
    //obtention de l'élément d'assertion SAML
    OMElement samlElement = ((OMStructure) myNewSamlToken.getXML()).getNode();
    
    //conversion de l'élément en chaîne
    String xmlString = samlElement.toString();

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_addingattributesandresigningexistingSAMLtokens
Nom du fichier : twbs_addingattributesandresigningexistingSAMLtokens.html