Ein Identitätsanbieter für „ SAML “ Enterprise

Dieser Abschnitt enthält Informationen zu den Metadaten von „ SAML “ und zur Zuordnung von Benutzerattributen, die für die Konfiguration eines „ SAML Enterprise“-Identitätsanbieters erforderlich sind.

SAML ist ein XML-Standard für den Austausch von Single-Sign-On-Informationen zwischen einem Identitätsanbieter, der die Identität des Benutzers bestätigt, und einem Dienstanbieter, der diese Identitätsinformationen nutzt. Im Vergleich zu einem Cloud-Verzeichnis-Identitätsanbieter ist die Konfiguration eines „ SAML “-Enterprise-Identitätsanbieters aufwändiger.

Als Dienstanbieter fungiert der Identitätsanbieter „ SAML Enterprise“:
  1. Die Authentifizierung der IBM® Verify Teilnehmer an einen externen Identitätsanbieter, der die Benutzer authentifiziert. Beispiele sind Microsoft ADFS und Microsoft Azure AD.
  2. Füllt ein Verify Benutzer-Anmeldetoken mit den zurückgegebenen Benutzeridentitätsdaten.
Die Kommunikation zwischen Service-Provider und Identitätsprovider basiert auf Werten, die in Metadatendateien enthalten sind. Um Single Sign-On über „ SAML “ zwischen dem Identitätsanbieter von „ SAML Enterprise“ und dem externen Identitätsanbieter zu ermöglichen, muss der Identitätsanbieter :
  1. Stellen Sie die Metadatendatei des IdentitätsanbietersSAML “ ( 2.0 ) dem IdentitätsanbieterSAML Enterprise“ zur Verfügung.
  2. Beziehen Sie die Metadatendatei des DienstanbietersSAML “ ( 2.0 ) vom IdentitätsanbieterSAML Enterprise“.

Voraussetzungen für SAML-Metadaten

  • Sowohl der Inhalt der Metadatendatei des Service-Providers als auch der Inhalt der Metadatendatei des Identitätsproviders muss der SAML 2.0-Spezifikation entsprechen.
  • Die Metadatendatei des Identitätsanbieters muss den öffentlichen Schlüssel des Identitätsanbieters enthalten, damit der Identitätsanbieter von „ SAML Enterprise“ dessen digitale Signatur überprüfen kann. Die Metadaten von „ SAML “ müssen ein <KeyDescriptor> -Element enthalten. Beispiel für ein Element <KeyDescriptor> für Signierschlüssel:
    <md:KeyDescriptor use="signing">
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <X509Data>
              <X509Certificate>idp.example.com SSO key</X509Certificate>
            </X509Data>
          </KeyInfo>
    </md:KeyDescriptor>
    
  • Die Metadatendatei des Service-Providers muss mindestens ein Element <md:KeyDescriptor use="signing"> enthalten. Beispiel:
    <md:KeyDescriptor use="signing">
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <X509Data>
              <X509Certificate>(...signing certificate...)</X509Certificate>
            </X509Data>
          </KeyInfo>
    </md:KeyDescriptor>
    
  • Wenn der IdentitätsanbieterSAML Enterprise“ ein internes Stamm- oder Zwischenzertifikat verwendet, muss jedes Zertifikat in der Kette einen <X509Certificate> -Abschnitt enthalten. Beispiel:
    <KeyDescriptor use="signing">    
         <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <X509Data>
              <X509Certificate>...root CA base64 encoded public certificate...</X509Certificate>
              <X509Certificate>...intermediate CA base64 encoded public certificate...</X509Certificate>
              <X509Certificate>...signer base64 encoded public certificate ...</X509Certificate>
            </X509Data> 
         </KeyInfo> 
    </KeyDescriptor>
    
    Aktualisieren Sie sowohl <md:KeyDescriptor use="signing"> das als auch <md:KeyDescriptor use="encryption"> das Element in den Metadaten von „ SAML “.
    VerifyHinweis: Das Zertifikat im <md:KeyDescriptor use="encryption"> -Element der Metadatendatei des Dienstanbieters kann vom externen Identitätsanbieter SAML 2.0 verwendet werden, um die SAML2 -Assertion-Elemente zu verschlüsseln und an zu senden.

SAML Zuordnung von Assertions und Verify Anmeldetoken

Der IdentitätsanbieterSAML Enterprise“ verwendet die Benutzeridentitätsdaten aus der „ SAML “-Assertion, um folgende Felder zu füllen:
  • Das Verify Anmeldetoken, das einen authentifizierten Verify Connect-Benutzer repräsentiert.

    Es speichert die Identität des Benutzers und die zugehörigen Attributinformationen.

  • Eine ausgehende „ SAML “-Anfrage an die Anwendung „ SaaS “.
Tabelle 1. SAML Zuordnung von Assertions und Berechtigungsnachweisen
Der Wert dieses Elements „ SAML “ wird dem Verify Anmeldetoken als
<saml:Subject><saml:NameID> preferred_username
<saml:Issuer> realmName, sofern realmName die Behauptung nicht ausdrücklich in der Aussage „ SAML “ enthalten ist.
Hinweis: Wenn <saml:Issuer> die Form http(s) URL hat, wird das <hostname> im URL extrahiert und zum Festlegen des realmName Attributs verwendet.

<saml:AttributeStatement>Weitere Informationen zur Benutzeridentität können in der „ SAML “-Assertion enthalten sein. Das Element <saml:AttributeValue> unterstützt nur den Zeichenfolgedatentyp.

Wenn das <saml:Attribute Name> einem der folgenden Standardattribute aus dem Verify Cloud-Verzeichnis entspricht, wird das Attribut dem Verify Anmeldetoken als Standardattribut mit demselben Attributnamen hinzugefügt:
  • preferred_username
  • given_name
  • family_name
  • name oder displayName
  • email oder emailAddress
  • groups oder groupIds
  • userID
  • realmName
  • mobile_number

Wenn die <saml:Attribute Name> keinem der Standardattribute aus dem Verify Cloud-Verzeichnis entsprechen, wird das Attribut dem Verify Anmeldetoken als erweitertes Attribut hinzugefügt. Erweiterte Attribute haben ein Präfix ext:: in den ursprünglichen Attributnamen.

emailAddressIm Folgenden finden Sie ein Beispiel für eine Antwort vom Typ „ SAML “, deren Attributangabe <saml:AttributeStatement> die Attribute und mobile_number enthält, die an das Verify Credential-Token weitergegeben werden sollen.
<?xml version="1.0"?>
<samlp:Response xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
      xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      ID="FIMRSP_549f7c46-014a-195f-b377-f24678dbf88a" 
      IssueInstant="2014-12-16T19:42:25Z" Version="2.0">
  <samlp:Status>
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
  </samlp:Status>
  <saml:Assertion ID="Assertion-uuid549f74ad-014a-120d-a67b-f24678dbf88a" 
      IssueInstant="2014-12-16T19:42:23Z" Version="2.0">
    <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">
         https://idp.example.com/SAML</saml:Issuer>
    <saml:Subject>
      <saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">testuser
          </saml:NameID>
      <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
        <saml:SubjectConfirmationData NotOnOrAfter="2014-12-16T19:43:23Z" 
             Recipient="https://sp.iam.ibmcloud.com/SAML"/>
      </saml:SubjectConfirmation>
    </saml:Subject>
    <saml:Conditions NotBefore="2014-12-16T19:41:23Z" NotOnOrAfter="2014-12-16T19:43:23Z">
      <saml:AudienceRestriction>
        <saml:Audience>https://sp.iam.ibmcloud.com/SAML</saml:Audience>
      </saml:AudienceRestriction>
    </saml:Conditions>
    <saml:AuthnStatement AuthnInstant="2014-12-16T19:42:23Z" 
           SessionIndex="uuid549ad19a-014a-1451-8e4d-998e0731058a" 
           SessionNotOnOrAfter="2014-12-16T20:42:21Z">
      <saml:AuthnContext>
        <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password
            </saml:AuthnContextClassRef>
      </saml:AuthnContext>
    </saml:AuthnStatement>
    <saml:AttributeStatement>
      <saml:Attribute Name="emailAddress" 
            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
        <saml:AttributeValue xsi:type="xs:string">testuser@idp.example.com</saml:AttributeValue>
      </saml:Attribute>
      <saml:Attribute Name="mobile_number" 
            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
        <saml:AttributeValue xsi:type="xs:string">01234556789</saml:AttributeValue>
      </saml:Attribute>    
    </saml:AttributeStatement>
  </saml:Assertion>
</samlp:Response>
Das folgende JSON-Objekt ist ein nicht normatives Beispiel für die Attribute eines Verify Anmeldetokens, das aus der Beispiel-Authentifizierungsantwort unter SAML konvertiert wurde. Es veranschaulicht, wie die Identität und die Attribute des Benutzers in der „ SAML “-Assertion im An meldetoken abgebildet werden.
{
"preferred_username":"testuser",
"realmName": "idp.example.com",
"email":"testuser@idp.example.com",
"ext:mobileNumber": "01234556789"
}