Attribute für selbst ausgestellte SAML-Token über die API hinzufügen

Mit der SAML-Bibliotheks-API kann ein selbst ausgestelltes SAML-Token mit angepassten Attributen erstellt werden.

Informationen zu diesem Vorgang

Wenn mit dem SAML-Tokengenerator selbst ausgestellte SAML-Token erstellt werden, ist es nicht möglich, über Callback-Handler-Eigenschaften angepasste Eigenschaften hinzuzufügen. Allerdings kann mit der SAML-Bibliotheks-API ein angepasster SAML-Attribut-Callback-Handler erstellt werden, der in der Datei SAMLIssuerConfig.properties definiert ist und der einem selbst ausgestellten SAML-Token Attribute hinzufügen kann. Ein SAML-Attribut-Callback-Handler kann auch von Anwendungen verwendet werden, die die Methode newSAMLToken verwenden.

Der SAML-Attribut-Callback-Handler wird für alle SAML-Token ausgeführt, die über den Anwendungsserver erstellt werden, in dem sich die geänderte Datei SAMLIssuerConfig.properties befindet.

Vorgehensweise

  1. Entwickeln Sie einen angepassten SAML-Attribut-Callback-Handler. Beispiel:
    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. Fügen Sie die angepasste Eigenschaft AttributeProvider der Datei (cellRoot)/sts/SAMLIssuerConfig.properties hinzu. Beispiel: AttributeProvider=test.saml.AttributeProvider

Ergebnisse

Wenn diese Task mit dem angegebenen Beispielcode ausgeführt wurde, wird allen SAML-Token das folgende Element hinzugefügt:
<saml:AttributeStatement>
    <saml:Attribute Name="newAttribute">
        <saml:AttributeValue>newValue</saml:AttributeValue>
    </saml:Attribute>
</saml:AttributeStatement>

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_addingattributestoselfissuedSAMLtokens
Dateiname:twbs_addingattributestoselfissuedSAMLtokens.html