SAML-Tokenweitergabe

Sie können verschiedene Methoden der SAML-Tokenweitergabe verwenden, um SAML-Token in abgehende Web-Service-Nachrichten einzuschließen.

Informationen zu diesem Vorgang

Ein Web-Service-Client kann zwei Arten von Token in abgehende Web-Service-Nachrichten einschließen:
  • Ursprüngliche SAML-Token, die der Client aus ankommenden Web-Service-Nachrichten erhalten hat.
  • Neue selbst ausgestellte SAML-Token.
Neue SAML-Token können mit Attributen aus ursprünglichen SAML-Token generiert werden oder mit Attributen aus dem "WSPrincipal"-Benutzernamen im "RunAs"-Subjekt. Die Konfiguration der Web-Service-Richtlinie bestimmt, welche SAML-Token weitergegeben werden. Sie können die Richtlinienkonfiguration außer Kraft setzen, indem Sie programmgesteuert SAML-Token in das Objekt "Axis2 RequestContext" einfügen, die weitergegeben werden sollen.

Es werden vier Weitergabemethoden unterstützt. Diese Tabelle zeigt eine Zusammenfassung der Weitergabemethoden und der zugehörigen Bindungsoptionen:

Tabelle 1. Weitergabemethoden und zugehörige Bindungsoptionen. Verwenden Sie die Weitergabe, um SAML-Token in Web-Service-Nachrichten einzuschließen.
SAML-Tokenweitergabemethode Bindungsoption Implementierungsdetails
Weitergabe des ursprünglichen SAML-Tokens. Die Bindungsoption "tokenRequest" ist auf den Wert propagation gesetzt. Das ursprüngliche SAML-Token wird von dem Server, auf dem das Token empfangen wurde, unter Verwendung von WS-Security an andere Server gesendet.
Weitergabe des Sicherheitsnamens des Benutzers, des eindeutigen Sicherheitsnamens des Benutzers, der Gruppen-IDs und des Namens des Sicherheitsrealms. Die Bindungsoption "tokenRequest" ist auf den Wert issueByWSCredential gesetzt. Die Systemstandardimplementierung wird außer Kraft gesetzt.

Das selbst ausgestellte SAML-Token enthält den Sicherheitsnamen des Benutzers, den eindeutigen Sicherheitsnamen des Benutzers, die Gruppen-IDs und den Namen des Sicherheitsrealms. Alle Namen sind im Sicherheitskontext des Benutzers im Objekt "WSCredential" angegeben.

Weitergabe der SAML-Tokenidentität und SAML-Attribute. Es ist keine Bindungsoption festgelegt. Systemstandardimplementierung.

Der Server generiert selbst ein neues SAML-Token, das die ursprünglichen SAML-Attribute Authentifizierungsmethode, "NameIdentifier" oder "SAML NameID" enthält und sendet das neue selbstgenerierte SAML-Token unter Verwendung von WS-Security an nachgeordnete Server. Der Name des Ausstellers des neuen SAML-Tokens, das Signaturzertifikat des Ausstellers und die Lebensdauer werden von den Konfigurationseigenschaften des SAML-Providers festgelegt.

Weitergabe des WSPrincipal. Die Bindungsoption "tokenRequest" ist auf den Wert issueByWSPrincipal gesetzt.
Hinweis zur Umstellung Hinweis zur Umstellung: Beginnend mit Version 8 ist das Ergebnis dasselbe, wenn Sie den Wert issueByWSPrincipal oder den Wert issueByWSCredential angeben. Wenn Sie nicht bereits den Wert issueByWSPrincipal verwenden, wird empfohlen, dass Sie den Wert issueByWSCredential verwenden. Wenn Sie bereits den Wert issueByWSPrincipal verwenden, sollten Sie diesen auf lange Sicht durch den Wert issueByWSCredential ersetzen. trns
Die Systemstandardimplementierung wird außer Kraft gesetzt.

Das selbst ausgestellte SAML-Token enthält WSPrincipal-Informationen im RunAs-Subjekt. Die Informationen werden als "NameIdentity" oder "NameID" gespeichert, ohne dass Informationen aus dem ursprünglichen SAML-Token kopiert werden, selbst wenn das Token im Subjekt existiert.

Programmgesteuerte Weitergabe eines vorhandenen SAML-Tokens. Das SAML-Token, das weitergegeben werden soll, mit der Eigenschaft com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.SAML-Token_im_Nachrichtenkontext in den "RequestContext" einfügen. Setzt alle vorhandenen Bindungsoptionen außer Kraft.

Vorgehensweise

  1. Geben Sie das ursprüngliche SAML-Token weiter, indem Sie die Bindungsoption "tokenRequest" in der Datei bindings.xml wie in den Schritten gezeigt auf den Wert propagation setzen. Diese Methode sendet das ursprüngliche SAML-Token unter Verwendung von WS-Security an andere Server. Damit die Weitergabe erfolgreich ist, muss im RunAs-Subjekt ein gültiges SAML-Token vorhanden sein. Der Server extrahiert das SAML-Token aus dem RunAs-Subjekt im aktuellen Sicherheitskontext und prüft folgende Bedingungen. Wenn diese Bedingungen ungültig sind, wird das SAML-Token von der WS-Security-Laufzeitumgebung nicht weitergegeben und die Weitergabeanforderung scheitert.
    • Das SAML-Token ist nicht abgelaufen und die Verfallszeit liegt innerhalb des Zeitfensters des Werts "notOnOrAfter".
    • Die Einstellung für die Bestätigungsmethode, "ConfirmationMethod", im SAML-Token entspricht der in der Konfiguration des Tokengenerators definierten Bindungsoption "confirmationMethod".
    • Die im SAML-Token enthaltene Einstellung für "ValueType" des Tokens entspricht der Einstellung für "ValueType" in der Konfiguration des Tokengenerators.

    Führen Sie diese Schritte aus, um den richtigen Wert für die Bindungsoption "tokenRequest" festzulegen. Diese Prozedur geht davon aus, dass eine Web-Service-Clientanwendung mit dem Namen "JaxWSServicesSamples" implementiert und die Bindung "Saml Bearer Client sample" zugeordnet ist.

    1. Klicken Sie auf Anwendungen > Anwendungstypen > WebSphere-Unternehmensanwendungen > JaxWSServicesSamples > Richtliniensätze und Bindungen für Service-Clients > Saml Bearer Client sample > WS-Security > Authentifizierung und Zugriffsschutz.
    2. Klicken Sie in der Tabelle mit den Authentifizierungstoken auf gen_saml11token.
    3. Klicken Sie auf Callback-Handler.
    4. Fügen Sie die angepasste Eigenschaft tokenRequest hinzu, und legen Sie den Wert propagation für diese Eigenschaft fest.
  2. Wenn die SAML-Tokenidentität und die SAML-Attribute mit einem selbst ausgestellten SAML-Token weitergegeben werden sollen, ändern Sie den abgehenden "tokenGenerator" in der Datei "bindings.xml". Diese Methode sendet die ursprünglichen SAML-Tokenattribute, "NameIdentifier" oder "NameID", und die Authentifizierungsmethode unter Verwendung von WS-Security aus dem ursprünglichen SAML-Token an andere Server. Wenn im Subjekt kein SAML-Token vorhanden ist, verwendet der Server den als "NameIdentifier" oder "NameID" gespeicherten "WSPrincipal", um ein selbst ausgestelltes SAML-Token zu erstellen. Diese Weitergabemethode ist die Systemstandardimplementierung. In dieser Methode ist die Bindungsoption nicht festgelegt.
    Für die Datei "bindings.xml" gelten bei Verwendung dieser Weitergabemethode die folgenden Einschränkungen:
    • Legen Sie die Bindungsoption "tokenRequest" in der Datei "bindings.xml" nicht fest.
    • Legen Sie die Option "stsURI binding" in der Datei "bindings.xml" nicht fest, oder geben Sie den folgenden Wert für diese Option an: www.websphere.ibm.com/SAML/Issuer/Self.
  3. Damit der "WSPrincipal" weitergegeben wird, ändern Sie die Datei "bindings.xml" wie in den Schritten gezeigt. Setzen Sie die Bindungsoption "tokenRequest" in der Datei "bindings.xml" auf den Wert issueByPrincipal. Bei Verwendung dieser Methode basiert das selbst ausgestellte SAML-Token immer auf dem "WSPrincipal", selbst wenn ein SAML-Token im Subjekt vorhanden ist. Das neue SAML-Token enthält den "WSPrincipal"-Benutzernamen als "NameId" oder "NameIdentifier". Das Token enthält keine anderen Attribute in den Objekten "WSPrincipal" und "WSCredential".
    Für die Datei "bindings.xml" gilt bei Verwendung dieser Weitergabemethode die folgende Einschränkung:
    • Legen Sie die Option "stsURI binding" in der Datei "bindings.xml" nicht fest, oder geben Sie den folgenden Wert für diese Option an: www.websphere.ibm.com/SAML/Issuer/Self.

    Führen Sie diese Schritte aus, um den richtigen Wert für die Bindungsoption "tokenRequest" festzulegen. Diese Prozedur geht davon aus, dass eine Web-Service-Clientanwendung mit dem Namen "JaxWSServicesSamples" implementiert und die Bindung "Saml Bearer Client sample" zugeordnet ist.

    1. Klicken Sie auf Anwendungen > Anwendungstypen > WebSphere-Unternehmensanwendungen > JaxWSServicesSamples > Richtliniensätze und Bindungen für Service-Clients > Saml Bearer Client sample > WS-Security > Authentifizierung und Zugriffsschutz.
    2. Klicken Sie in der Tabelle mit den Authentifizierungstoken auf gen_saml11token.
    3. Klicken Sie auf Callback-Handler.
    4. Fügen Sie die angepasste Eigenschaft tokenRequest hinzu, und legen Sie den Wert issueByPrincipal für diese Eigenschaft fest.
  4. Führen Sie die folgenden Schritte aus, um ein vorhandenes SAML-Token durch Einfügen von "SAMLToken" in den "RequestContext" weiterzugeben. Verwenden Sie diese Methode, um ein SAML-Token, das Sie erstellt haben, unter Verwendung von WS-Security an nachgeordnete Server zu senden. Die Weitergabe wird automatisch ausgelöst, wenn die WS-Security-Laufzeit ein SAML-Token im "RequestContext" erkennt. Das vorhandene Token setzt alle vorhandenen Bindungsoptionen außer Kraft. Um diese Weitergabemethode zu verwenden, gehen Sie wie in den Schritten gezeigt vor, um das vorhandene SAML-Token im "RequestContext" zu speichern, indem Sie com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.SAML-Token_im_Nachrichtenkontext als Schlüssel angeben.
    1. Generieren Sie ein SAML-Token mit der Methode SAMLToken samlToken = <Tokentyp>. Beispiel:
      SAMLToken samlToken = samlFactory.newSAMLToken(cred, reqData, samlIssuerCfg);
    2. Speichern Sie das "SAMLToken" wie im folgenden Beispiel im "RequestContext":
      Map requestContext = ((BindingProvider)port).getRequestContext();
         requestContext.put("com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.SAML-Token_im_Nachrichtenkontext", samlToken );
    Diese Weitergabeoption kann gleichzeitig mit den anderen Weitergabemethoden vorhanden sein und setzt die anderen Methoden außer Kraft. Wenn das SAML-Token im "RequestContext" abgelaufen ist oder die Verfallszeit für das Token kleiner ist als die aktuelle Zeit plus die Cachezeitreserve, ignoriert die WS-Security-Laufzeitumgebung das SAML-Token und verwendet eine der anderen drei Weitergabemethoden, die in der Datei "bindings.xml" konfiguriert ist. Um zu verhindern, dass die anderen Weitergabemethoden verwendet werden, fügen Sie die folgende Bindungsoption zu den angepassten Eigenschaften unter dem Callback-Handler in der Konfiguration des "TokenGenerator" hinzu: failOverToTokenRequest = false.
  5. Um die im Objekt com.ibm.websphere.security.cred.WSCredential enthaltenen Gruppenzugehörigkeiten eines Benutzers, den eindeutigen Sicherheitsnamen und den Bereichsnamen weiterzugeben, müssen Sie die Datei bindings.xml laut Beschreibung ändern. Setzen Sie die Bindungsoption tokenRequest in der Datei bindings.xml auf den Wert issueByWSCredential. Bei Verwendung dieser Methode basiert das selbst ausgestellte SAML-Token immer auf dem WSCredential, selbst wenn ein SAML-Token im Subjekt vorhanden ist.

    Das neue SAML-1.1-Token enthält die folgenden Zusicherungen:

    • Das Element NameIdentifier enthält den Wert von SecurityName aus WSCredential, wobei für das Element NameQualifier der Realmname aus WSCredential angegeben ist. Der SecurityName wird durch Aufrufen der Methode WSCredential.getSecurityName() abgerufen. Der Realmname wird durch Aufrufen der Methode WSCredential.getRealmName() abgerufen.
    • Für alle Attribute ist ein AttributeNamespace mit dem Wert com.ibm.websphere.security.cred.WSCredential definiert.
    • Das Attribut GroupIds enthält die Namen aller Gruppen, zu denen ein Benutzer gehört. Die Gruppennamen werden durch Aufrufen der Methode WSCredential.getGroupIds() abgerufen.
    • Das Attribut UniqueSecurityName enthält den eindeutigen Sicherheitsnamen, der durch Aufrufen der Methode WSCredential.getUniqueSecurityName() abgerufen wird.
    • Sie haben die Möglichkeit, den Realmnamen aus WSCredential durch Hinzufügen der angepassten Eigenschaft includeRealmName=true im Callback-Handler zuzusichern.

    Das neue SAML-2.0-Token enthält die folgenden Zusicherungen:

    • Das Element NameID enthält den Wert von SecurityName aus WSCredential, wobei für das Element NameQualifier der Realmname aus WSCredential angegeben ist. Der SecurityName wird durch Aufrufen der Methode WSCredential.getSecurityName() abgerufen. Der Realmname wird durch Aufrufen der Methode WSCredential.getRealmName() abgerufen.
    • Für alle Attribute ist ein NameFormat mit dem Wert com.ibm.websphere.security.cred.WSCredential definiert.
    • Das Attribut GroupIds enthält die Namen aller Gruppen, zu denen ein Benutzer gehört. Die Gruppennamen werden durch Aufrufen der Methode WSCredential.getGroupIds() abgerufen.
    • Das Attribut UniqueSecurityName enthält den eindeutigen Sicherheitsnamen, der durch Aufrufen der Methode WSCredential.getUniqueSecurityName() abgerufen wird.
    • Sie haben die Möglichkeit, den Realmnamen aus WSCredential durch Hinzufügen der angepassten Eigenschaft includeRealmName=true im Callback-Handler zuzusichern.
    Für die Datei bindings.xml gilt bei Verwendung der Weitergabemethode die folgende Einschränkung:
    • Legen Sie die Bindungsoption stsURI in der Datei bindings.xml nicht fest.
    Führen Sie diese Schritte aus, um den richtigen Wert für die Bindungsoption tokenRequest festzulegen. Diese Prozedur geht davon aus, dass eine Web-Service-Clientanwendung mit dem Namen JaxWSServicesSamples implementiert und die Bindung Saml Bearer Client sample zugeordnet ist.
    1. Klicken Sie auf Anwendungen > Anwendungstypen > WebSphere-Unternehmensanwendungen > JaxWSServicesSamples > Richtliniensätze und Bindungen für Service-Clients > Saml Bearer Client sample > WS-Security > Authentifizierung und Zugriffsschutz.
    2. Klicken Sie in der Tabelle mit den Authentifizierungstoken auf gen_saml11token.
    3. Klicken Sie auf Callback-Handler.
    4. Fügen Sie die angepasste Eigenschaft tokenRequest hinzu, und legen Sie den Wert issueByWSCredential für diese Eigenschaft fest.
    Das folgende Beispiel veranschaulicht die Elemente NameIdentifier und Attribute in einer selbst ausgestellten, auf WSCredential basierenden Zusicherung gemäß SAML 1.1.
    <saml:AttributeStatement>
        <saml:Subject>
            <saml:NameIdentifier NameQualifier="ldap.acme.com:9080">uid=alice,dc=acme,dc=com</saml:NameIdentifier>
            <saml:SubjectConfirmation>
                <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod>
            </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:Attribute AttributeName="UniqueSecurityName" AttributeNamespace="com.ibm.websphere.security.cred.WSCredential">
            <saml:AttributeValue>uid=alice,dc=acme,dc=com</saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute AttributeName="GroupIds" AttributeNamespace="com.ibm.websphere.security.cred.WSCredential">
            <saml:AttributeValue>cn=development,dc=acme,dc=com</saml:AttributeValue>
            <saml:AttributeValue>cn=deployment,dc=acme,dc=com</saml:AttributeValue>
            <saml:AttributeValue>cn=test,dc=acme,dc=com</saml:AttributeValue>
        </saml:Attribute>
    </saml:AttributeStatement>
    Das folgende Beispiel veranschaulicht die Elemente NameID und Attribute in einer selbst ausgestellten, auf WSCredential basierenden Zusicherung gemäß SAML 2.0.
    <saml2:AttributeStatement>
        <saml2:Attribute Name="UniqueSecurityName"
               NameFormat="com.ibm.websphere.security.cred.WSCredential">
            <saml2:AttributeValue>uid=alice,dc=acme,dc=com</saml2:AttributeValue>
        <saml2:Attribute>
        <saml2:Attribute AttributeName="GroupIds"
               NameFormat="com.ibm.websphere.security.cred.WSCredential">
            <saml2:AttributeValue>cn=development,dc=acme,dc=com</saml2:AttributeValue>
            <saml2:AttributeValue>cn=deployment,dc=acme,dc=com</saml2:AttributeValue>
            <saml2:AttributeValue>cn=test,dc=acme,dc=com</saml2:AttributeValue>
        </saml2:Attribute>
    </saml2:AttributeStatement>
    <saml2:NameID NameQualifier="ldap.acme.com:9060">alice</saml2:NameID>

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_propagatesamltoken
Dateiname:twbs_propagatesamltoken.html