Skip to main content
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Verwenden Sie die API, wenn Single Sign-On aktiviert ist (Active Directory).

Wenn Sie"Single Sign-On (SSO) konfiguriert und aktiviert" und Sie Active Directory als SSO-Anbieter verwenden, müssen Sie eine Reihe von API-Anfragen stellen, um ein Authentifizierungstoken zu erhalten, das für die Grid Management API oder die Tenant Management API gültig ist.

Sign in , wenn Single Sign-On aktiviert ist

Diese Anweisungen gelten, wenn Sie Active Directory als SSO-Identitätsanbieter verwenden.

Bevor Sie beginnen
  • Sie kennen den SSO-Benutzernamen und das Kennwort für einen Verbundbenutzer, der zu einer StorageGRID -Benutzergruppe gehört.

  • Wenn Sie auf die Tenant Management API zugreifen möchten, kennen Sie die Mandantenkonto-ID.

Informationen zu diesem Vorgang

Um ein Authentifizierungstoken zu erhalten, können Sie eines der folgenden Beispiele verwenden:

  • Der storagegrid-ssoauth.py Python-Skript, das sich im Verzeichnis der StorageGRID Installationsdateien befindet(./rpms für Red Hat Enterprise Linux, ./debs für Ubuntu oder Debian und ./vsphere für VMware).

  • Ein Beispiel-Workflow für Curl-Anfragen.

    Wenn Sie den Curl-Workflow zu langsam ausführen, kann es zu einer Zeitüberschreitung kommen. Möglicherweise wird der folgende Fehler angezeigt: A valid SubjectConfirmation was not found on this Response .

    Hinweis Der beispielhafte Curl-Workflow schützt das Kennwort nicht davor, von anderen Benutzern eingesehen zu werden.

Wenn Sie ein Problem mit der URL-Kodierung haben, wird möglicherweise folgender Fehler angezeigt: Unsupported SAML version .

Schritte
  1. Wählen Sie eine der folgenden Methoden aus, um ein Authentifizierungstoken zu erhalten:

    • Verwenden Sie die storagegrid-ssoauth.py Python-Skript. Fahren Sie mit Schritt 2 fort.

    • Verwenden Sie Curl-Anfragen. Fahren Sie mit Schritt 3 fort.

  2. Wenn Sie die storagegrid-ssoauth.py Skript, übergeben Sie das Skript an den Python-Interpreter und führen Sie das Skript aus.

    Geben Sie bei entsprechender Aufforderung Werte für die folgenden Argumente ein:

    • Die SSO-Methode. Geben Sie ADFS oder adfs ein.

    • Der SSO-Benutzername

    • Die Domäne, in der StorageGRID installiert ist

    • Die Adresse für StorageGRID

    • Die Mandantenkonto-ID, wenn Sie auf die Mandantenverwaltungs-API zugreifen möchten.

      SSO-Authentifizierungsskript für AD FS

    Das StorageGRID Autorisierungstoken wird in der Ausgabe bereitgestellt. Sie können das Token jetzt für andere Anfragen verwenden, ähnlich wie Sie die API verwenden würden, wenn SSO nicht verwendet würde.

  3. Wenn Sie Curl-Anfragen verwenden möchten, gehen Sie wie folgt vor.

    1. Deklarieren Sie die für die Anmeldung erforderlichen Variablen.

      export SAMLUSER='my-sso-username'
      export SAMLPASSWORD='my-password'
      export SAMLDOMAIN='my-domain'
      export TENANTACCOUNTID='12345'
      export STORAGEGRID_ADDRESS='storagegrid.example.com'
      export AD_FS_ADDRESS='adfs.example.com'
      Hinweis Um auf die Grid Management API zuzugreifen, verwenden Sie 0 als TENANTACCOUNTID .
    2. Um eine signierte Authentifizierungs-URL zu erhalten, senden Sie eine POST-Anfrage an /api/v3/authorize-saml , und entfernen Sie die zusätzliche JSON-Kodierung aus der Antwort.

      Dieses Beispiel zeigt eine POST-Anforderung für eine signierte Authentifizierungs-URL für TENANTACCOUNTID . Die Ergebnisse werden weitergeleitet an python -m json.tool um die JSON-Kodierung zu entfernen.

      curl -X POST "https://$STORAGEGRID_ADDRESS/api/v3/authorize-saml" \
        -H "accept: application/json" -H  "Content-Type: application/json" \
        --data "{\"accountId\": \"$TENANTACCOUNTID\"}" | python -m json.tool

      Die Antwort für dieses Beispiel enthält eine signierte URL, die URL-codiert ist, jedoch nicht die zusätzliche JSON-Codierungsebene.

      {
          "apiVersion": "3.0",
          "data": "https://adfs.example.com/adfs/ls/?SAMLRequest=fZHLbsIwEEV%2FJTuv7...sSl%2BfQ33cvfwA%3D&RelayState=12345",
          "responseTime": "2018-11-06T16:30:23.355Z",
          "status": "success"
      }
    3. Speichern Sie die SAMLRequest aus der Antwort zur Verwendung in nachfolgenden Befehlen.

      export SAMLREQUEST='fZHLbsIwEEV%2FJTuv7...sSl%2BfQ33cvfwA%3D'
    4. Rufen Sie eine vollständige URL ab, die die Clientanforderungs-ID von AD FS enthält.

      Eine Möglichkeit besteht darin, das Anmeldeformular über die URL aus der vorherigen Antwort anzufordern.

      curl "https://$AD_FS_ADDRESS/adfs/ls/?SAMLRequest=$SAMLREQUEST&RelayState=$TENANTACCOUNTID" | grep 'form method="post" id="loginForm"'

      Die Antwort enthält die Client-Anforderungs-ID:

      <form method="post" id="loginForm" autocomplete="off" novalidate="novalidate" onKeyPress="if (event && event.keyCode == 13) Login.submitLoginRequest();" action="/adfs/ls/?
      SAMLRequest=fZHRToMwFIZfhb...UJikvo77sXPw%3D%3D&RelayState=12345&client-request-id=00000000-0000-0000-ee02-0080000000de" >
    5. Speichern Sie die Client-Anforderungs-ID aus der Antwort.

      export SAMLREQUESTID='00000000-0000-0000-ee02-0080000000de'
    6. Senden Sie Ihre Anmeldeinformationen an die Formularaktion aus der vorherigen Antwort.

      curl -X POST "https://$AD_FS_ADDRESS/adfs/ls/?SAMLRequest=$SAMLREQUEST&RelayState=$TENANTACCOUNTID&client-request-id=$SAMLREQUESTID" \
      --data "UserName=$SAMLUSER@$SAMLDOMAIN&Password=$SAMLPASSWORD&AuthMethod=FormsAuthentication" --include

      AD FS gibt eine 302-Weiterleitung mit zusätzlichen Informationen in den Headern zurück.

      Hinweis Wenn für Ihr SSO-System die Multi-Faktor-Authentifizierung (MFA) aktiviert ist, enthält der Formularbeitrag auch das zweite Passwort oder andere Anmeldeinformationen.
      HTTP/1.1 302 Found
      Content-Length: 0
      Content-Type: text/html; charset=utf-8
      Location: https://adfs.example.com/adfs/ls/?SAMLRequest=fZHRToMwFIZfhb...UJikvo77sXPw%3D%3D&RelayState=12345&client-request-id=00000000-0000-0000-ee02-0080000000de
      Set-Cookie: MSISAuth=AAEAADAvsHpXk6ApV...pmP0aEiNtJvWY=; path=/adfs; HttpOnly; Secure
      Date: Tue, 06 Nov 2018 16:55:05 GMT
    7. Speichern Sie die MSISAuth Cookie aus der Antwort.

      export MSISAuth='AAEAADAvsHpXk6ApV...pmP0aEiNtJvWY='
    8. Senden Sie eine GET-Anfrage mit den Cookies aus dem Authentifizierungs-POST an den angegebenen Speicherort.

      curl "https://$AD_FS_ADDRESS/adfs/ls/?SAMLRequest=$SAMLREQUEST&RelayState=$TENANTACCOUNTID&client-request-id=$SAMLREQUESTID" \
      --cookie "MSISAuth=$MSISAuth" --include

      Die Antwortheader enthalten AD FS-Sitzungsinformationen für die spätere Abmeldung und der Antworttext enthält die SAML-Antwort in einem ausgeblendeten Formularfeld.

      HTTP/1.1 200 OK
      Cache-Control: no-cache,no-store
      Pragma: no-cache
      Content-Length: 5665
      Content-Type: text/html; charset=utf-8
      Expires: -1
      Server: Microsoft-HTTPAPI/2.0
      P3P: ADFS doesn't have P3P policy, please contact your site's admin for more details
      Set-Cookie: SamlSession=a3dpbnRlcnMtUHJpbWFyeS1BZG1pbi0xNzgmRmFsc2Umcng4NnJDZmFKVXFxVWx3bkl1MnFuUSUzZCUzZCYmJiYmXzE3MjAyZTA5LThmMDgtNDRkZC04Yzg5LTQ3NDUxYzA3ZjkzYw==; path=/adfs; HttpOnly; Secure
      Set-Cookie: MSISAuthenticated=MTEvNy8yMDE4IDQ6MzI6NTkgUE0=; path=/adfs; HttpOnly; Secure
      Set-Cookie: MSISLoopDetectionCookie=MjAxOC0xMS0wNzoxNjozMjo1OVpcMQ==; path=/adfs; HttpOnly; Secure
      Date: Wed, 07 Nov 2018 16:32:59 GMT
      
      <form method="POST" name="hiddenform" action="https://storagegrid.example.com:443/api/saml-response">
        <input type="hidden" name="SAMLResponse" value="PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4=" /><input type="hidden" name="RelayState" value="12345" />
    9. Speichern Sie die SAMLResponse aus dem versteckten Feld:

      export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4='
    10. Mit den gespeicherten SAMLResponse , erstellen Sie ein StorageGRID/api/saml-response Anforderung zum Generieren eines StorageGRID Authentifizierungstokens.

      Für RelayState , verwenden Sie die Mandantenkonto-ID oder verwenden Sie 0, wenn Sie sich bei der Grid Management API anmelden möchten.

      curl -X POST "https://$STORAGEGRID_ADDRESS:443/api/saml-response" \
        -H "accept: application/json" \
        --data-urlencode "SAMLResponse=$SAMLResponse" \
        --data-urlencode "RelayState=$TENANTACCOUNTID" \
        | python -m json.tool

      Die Antwort enthält das Authentifizierungstoken.

    {
        "apiVersion": "3.0",
        "data": "56eb07bf-21f6-40b7-af0b-5c6cacfb25e7",
        "responseTime": "2018-11-07T21:32:53.486Z",
        "status": "success"
    }
    1. Speichern Sie das Authentifizierungstoken in der Antwort als MYTOKEN .

      export MYTOKEN="56eb07bf-21f6-40b7-af0b-5c6cacfb25e7"

      Sie können jetzt MYTOKEN für andere Anfragen, ähnlich wie Sie die API verwenden würden, wenn SSO nicht verwendet würde.

Melden Sie sich von der API ab, wenn Single Sign-On aktiviert ist

Wenn Single Sign-On (SSO) aktiviert wurde, müssen Sie eine Reihe von API-Anfragen stellen, um sich von der Grid Management API oder der Tenant Management API abzumelden. Diese Anweisungen gelten, wenn Sie Active Directory als SSO-Identitätsanbieter verwenden

Informationen zu diesem Vorgang

Bei Bedarf können Sie sich von der StorageGRID -API abmelden, indem Sie sich von der Single-Logout-Seite Ihrer Organisation abmelden. Oder Sie können Single Logout (SLO) von StorageGRID auslösen, wofür ein gültiges StorageGRID Bearer-Token erforderlich ist.

Schritte
  1. Um eine signierte Abmeldeanforderung zu generieren, übergeben Sie `cookie "sso=true" an die SLO-API:

    curl -k -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \
    -H "accept: application/json" \
    -H "Authorization: Bearer $MYTOKEN" \
    --cookie "sso=true" \
    | python -m json.tool

    Es wird eine Abmelde-URL zurückgegeben:

    {
        "apiVersion": "3.0",
        "data": "https://adfs.example.com/adfs/ls/?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D",
        "responseTime": "2018-11-20T22:20:30.839Z",
        "status": "success"
    }
  2. Speichern Sie die Abmelde-URL.

    export LOGOUT_REQUEST='https://adfs.example.com/adfs/ls/?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D'
  3. Senden Sie eine Anfrage an die Abmelde-URL, um SLO auszulösen und zurück zu StorageGRID umzuleiten.

    curl --include "$LOGOUT_REQUEST"

    Die 302-Antwort wird zurückgegeben. Der Umleitungsort ist nicht auf die reine API-Abmeldung anwendbar.

    HTTP/1.1 302 Found
    Location: https://$STORAGEGRID_ADDRESS:443/api/saml-logout?SAMLResponse=fVLLasMwEPwVo7ss%...%23rsa-sha256
    Set-Cookie: MSISSignoutProtocol=U2FtbA==; expires=Tue, 20 Nov 2018 22:35:03 GMT; path=/adfs; HttpOnly; Secure
  4. Löschen Sie das StorageGRID Bearer-Token.

    Das Löschen des StorageGRID Bearer-Tokens funktioniert genauso wie ohne SSO. Wenn „Cookie „sso=true““ nicht angegeben ist, wird der Benutzer von StorageGRID abgemeldet, ohne dass der SSO-Status beeinträchtigt wird.

    curl -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \
    -H "accept: application/json" \
    -H "Authorization: Bearer $MYTOKEN" \
    --include

    A 204 No Content Die Antwort zeigt an, dass der Benutzer jetzt abgemeldet ist.

    HTTP/1.1 204 No Content