Personnalisation du NameID des jetons SAML auto-générés à l'aide de l'API

L'API de bibliothèque SAML peut être utilisée pour créer un jeton SAML qui possède un NameID personnalisé.

Pourquoi et quand exécuter cette tâche

Si les jetons SAML auto-générés sont créés à l'aide du générateur de jetons SAML, il n'est pas possible de personnaliser le NameID à l'aide des propriétés du gestionnaire d'appel. Toutefois, il est possible de créer, à l'aide de l'API de bibliothèque SAML, un gestionnaire d'appel d'attribut NameID SAML personnalisé défini dans le fichier SAMLIssuerConfig.properties qui peut personnaliser le NameID d'un jeton SAML auto-généré. Un gestionnaire d'appel d'attribut NameID SAML peut également être utilisé par les applications qui utilisent la méthode newSAMLToken.

Le gestionnaire d'appel d'attribut NameID SAML est exécuté pour tous les jetons SAML créés à partir du serveur d'applications avec le fichier SAMLIssuerConfig.properties modifié.

Procédure

  1. Développez un gestionnaire d'appel d'attribut NameID SAML personnalisé. Exemple :
    package test.saml;
    
    import java.io.IOException;
    import javax.security.auth.callback.Callback;
    import javax.security.auth.callback.UnsupportedCallbackException;
    import com.ibm.websphere.wssecurity.callbackhandler.NameIDCallback;
    import com.ibm.wsspi.wssecurity.saml.data.SAMLNameID;
    
    public class NameIDProvider implements javax.security.auth.callback.CallbackHandler {
        @Override
        public void handle(Callback[] callbacks) throws IOException,
        UnsupportedCallbackException {
            if (callbacks == null || callbacks.length == 0) {
                throw new UnsupportedCallbackException(null, "There is no callback.");
            }
            for (int i = 0; i < callbacks.length; i++) {
                if (callbacks[i] instanceof NameIDCallback) {
                    NameIDCallback callback = (NameIDCallback)callbacks[i];
                    SAMLNameID nameid = new SAMLNameID("newNameID", null, null, null, null);
                    callback.setSAMLNameID(nameid);
                }
            }
        }
    }
  2. Ajoutez la propriété personnalisée NameIDProvider au fichier (cellRoot)/sts/SAMLIssuerConfig.properties. Par exemple : NameIDProvider =test.saml.NameIDProvider

Résultats

Si cette tâche est effectuée à l'aide de l'exemple de code fourni, l'élément suivant est ajouté à tous les jetons SAML :
<saml:Subject>
<saml:NameID>newNameID</saml:NameID>
</saml:Subject>

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_customizingSAMLnameid
Nom du fichier : twbs_customizingSAMLnameid.html