Création d'un jeton SAML holder-of-key à l'aide de l'API
Le jeton SAML holder-of-key (HoK - détenteur de clé) constitue une extension de l'interface publique du jeton de sécurité dans WebSphere Application Server, et peut servir de jeton de protection. WebSphere Application Server contient une API de bibliothèque SAML pour la création d'un jeton holder-of-key.
Pourquoi et quand exécuter cette tâche
La création d'un jeton SAML requiert trois paramètres :
- com.ibm.wsspi.wssecurity.saml.config.RequesterConfig
- com.ibm.wsspi.wssecurity.saml.config.ProviderConfig
- com.ibm.wsspi.wssecurity.saml.config.CredentialConfig
Procédure
Exemple
Utilisez l'exemple de code suivant pour créer un jeton holder-of-key SAML version 1.1 utilisant une clé secrète (clé symétrique) à partir du sujet.
import com.ibm.wsspi.wssecurity.saml.config.RequesterConfig;
import com.ibm.wsspi.wssecurity.saml.config.ProviderConfig;
import com.ibm.wsspi.wssecurity.saml.config.CredentialConfoig ;
import com.ibm.websphere.wssecurity.wssapi.token.SAMLTokenFactory
SAMLTokenFactory samlFactory = SAMLTokenFactory.getInstance(SAMLTokenFactory.WssSamlV11Token11);
RequesterConfig reqData = samlFactory.newSymmetricHolderOfKeyTokenGenerateConfig();
//Map "AppliesTo" to key alias, so library knows how to encrypt the Symmetric Key
reqData.setKeyAliasForAppliesTo("SOAPRecipient");
ProviderConfig samlIssuerCfg = samlFactory.newDefaultProviderConfig(IsserUri);
Subject subject = com.ibm.websphere.security.auth.WSSubject.getRunAsSubject();
SAMLToken samlToken = samlFactory.newSAMLToken(subject, reqData, samlIssuerCfg);
Utilisez l'exemple de code suivant pour créer un jeton holder-of-key SAML version 2.0 utilisant une clé publique à partir du sujet :
//User expression on how SAML should be created, default provided
RequesterConfig reqData = samlFactory.newAsymmetricHolderOfKeyTokenGenerateConfig();
//Choose a public key to be included in SAML
reqData.setKeyAliasForRequester("SOAPInitiator");
//Get issuer key store so can sign or encrypt assertion, issuer name
ProviderConfig samlIssuerCfg = samlFactory.newDefaultProviderConfig("any_issuer");
//Get JAAS Subject so the factory can populate principal and attributes to SAML
Subject subject = com.ibm.websphere.security.auth.WSSubject.getRunAsSubject();
SAMLToken samlToken = samlFactory.newSAMLToken(subject, reqData, samlIssuerCfg);
Utilisez l'exemple de code suivant pour créer un jeton holder-of-key SAML version 2.0 utilisant une clé secrète (clé symétrique) :
SAMLTokenFactory samlFactory = SAMLTokenFactory.getInstance (SAMLTokenFactory.WssSamlV20Token11);
RequesterConfig reqData = samlFactory. newSymmetricHolderOfKeyTokenGenerateConfig ();
//Map "AppliesTo" to key alias so library knows how to encrypt the Symmetric Key
reqData.setKeyAliasForAppliesTo("SOAPRecipient");
ProviderConfig samlIssuerCfg = samlFactory.newDefaultProviderConfig(null);
CredentialConfig cred = samlFactory.newCredentialConfig ();
cred.setRequesterNameID("any_name");
SAMLToken samlToken = samlFactory.newSAMLToken(subject, reqData, samlIssuerCfg);