Ajout d'attributs à 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 auto-généré qui possède des attributs personnalisés.

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 d'ajouter des attributs personnalisés à 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'attributs SAML personnalisé défini dans le fichier SAMLIssuerConfig.properties qui peut ajouter des attributs à un jeton SAML auto-généré. Un gestionnaire d'appel d'attributs SAML peut également être utilisé par les applications qui utilisent la méthode newSAMLToken.

Le gestionnaire d'appel d'attributs 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'attributs 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.Saml11AttributeCallback;
    import com.ibm.wsspi.wssecurity.saml.data.SAMLAttribute;
    import java.util.ArrayList;
    
    public class AttributeProvider 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 Saml11AttributeCallback) {
                    Saml11AttributeCallback callback = (Saml11AttributeCallback)callbacks[i];
                    SAMLAttribute attr = new SAMLAttribute("newAttribute", new String[]{"newValue"}, null, null, null, null);
                    ArrayList<SAMLAttribute> attrList = callback.getSAMLAttributes();               
                    if (attrList == null) {
                        attrList = new ArrayList<SAMLAttribute>();
                        attrList.add(attr);
                        callback.setSAMLAttributes(attrList);
                    } else {
                        attrList.add(attr);
                    }
                }
            }
        }
    }
  2. Ajoutez la propriété personnalisée AttributeProvider au fichier (cellRoot)/sts/SAMLIssuerConfig.properties. Par exemple : AttributeProvider=test.saml.AttributeProvider

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:AttributeStatement>
    <saml:Attribute Name="newAttribute">
        <saml:AttributeValue>newValue</saml:AttributeValue>
    </saml:Attribute>
</saml:AttributeStatement>

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_addingattributestoselfissuedSAMLtokens
Nom du fichier : twbs_addingattributestoselfissuedSAMLtokens.html