Namens-ID für selbst ausgestellte SAML-Token über die API anpassen

Mit der SAML-Bibliotheks-API kann ein SAML-Token mit einer angepassten Namens-ID (NameID) erstellt werden.

Informationen zu diesem Vorgang

Wenn mit dem SAML-Tokengenerator selbst ausgestellte SAML-Token erstellt werden, ist es nicht möglich, die Namens-ID (NameID) über Callback-Handler-Eigenschaften anzupassen. Allerdings kann mit der SAML-Bibliotheks-API ein angepasster SAML-NameID-Callback-Handler erstellt werden, der in der Datei SAMLIssuerConfig.properties definiert ist und der die Namens-ID eines selbst ausgestellten SAML-Tokens anpassen kann. Ein SAML-NameID-Callback-Handler kann auch von Anwendungen verwendet werden, die die Methode newSAMLToken verwenden.

Der SAML-NameID-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-NameID-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.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. Fügen Sie die angepasste Eigenschaft NameIDProvider der Datei (cellRoot)/sts/SAMLIssuerConfig.properties hinzu. Beispiel: NameIDProvider =test.saml.NameIDProvider

Ergebnisse

Wenn diese Task mit dem angegebenen Beispielcode ausgeführt wurde, wird allen SAML-Token das folgende Element hinzugefügt:
<saml:Subject>
<saml:NameID>newNameID</saml:NameID>
</saml:Subject>

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_customizingSAMLnameid
Dateiname:twbs_customizingSAMLnameid.html