Skip to main content
Eine neuere Version dieses Produkts ist erhältlich.
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Verwenden Sie die StorageGRID API, wenn Single Sign-On aktiviert ist (PingFederate)

Änderungen vorschlagen

Wenn Sie "Single Sign-On (SSO) konfiguriert und aktiviert" haben und PingFederate als SSO-Anbieter verwenden, muss eine Reihe von API-Anfragen gestellt werden, um ein Authentifizierungs-Token zu erhalten, das für die Grid Management API oder die Tenant Management API gültig ist.

Bei aktivierter Single Sign-On-Funktion erfolgt die Anmeldung an der API.

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

Bevor Sie beginnen
  • ${post_edited_translations.segment}

  • ${post_edited_translations.segment}

Über diese Aufgabe

Um ein Authentifizierungs-Token zu erhalten, kann eines der folgenden Beispiele verwendet werden:

  • Das storagegrid-ssoauth.py Python-Skript befindet sich im StorageGRID Installationsverzeichnis (./rpms für RHEL, ./debs für Ubuntu oder Debian und ./vsphere für VMware.

  • Ein Beispielworkflow für curl-Anfragen.

    Der curl Workflow kann zu einem Timeout führen, wenn er zu langsam ausgeführt wird. Möglicherweise wird folgender Fehler angezeigt: A valid SubjectConfirmation was not found on this Response.

    Hinweis Der im Beispiel gezeigte curl Workflow schützt das Passwort nicht davor, von anderen Benutzern eingesehen zu werden.

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

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

    • Das Python-Skript storagegrid-ssoauth.py verwenden. Weiter mit Schritt 2.

    • Verwenden Sie curl Anfragen. Wechseln Sie zu Schritt 3.

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

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

    • Die SSO-Methode. Es kann jede beliebige Variante von "pingfederate" eingegeben werden (PINGFEDERATE, pingfederate und so weiter).

    • Der SSO Benutzername

    • Die Domäne, in der StorageGRID installiert ist. Dieses Feld wird nicht für PingFederate verwendet. Das Feld kann leer bleiben oder es kann ein beliebiger Wert eingegeben werden.

    • Die Adresse für StorageGRID

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

      SSO-Authentifizierungsskript für Ping Federate

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

  3. ${post_edited_translations.segment}

    1. ${post_edited_translations.segment}

      export SAMLUSER='my-sso-username'
      export SAMLPASSWORD='my-password'
      export TENANTACCOUNTID='12345'
      export STORAGEGRID_ADDRESS='storagegrid.example.com'
      Hinweis Für den Zugriff auf die Grid Management API ist 0 als TENANTACCOUNTID zu verwenden.
    2. Um eine signierte Authentifizierungs-URL zu erhalten, wird eine POST-Anfrage an /api/v3/authorize-saml gesendet und die zusätzliche JSON-Codierung aus der Antwort entfernt.

      Dieses Beispiel zeigt eine POST-Anfrage für eine signierte Authentifizierungs-URL für TENANTACCOUNTID. Die Ergebnisse werden an python -m json.tool übergeben, 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, aber nicht die zusätzliche JSON-Codierungsschicht.

      {
          "apiVersion": "3.0",
          "data": "https://my-pf-baseurl/idp/SSO.saml2?...",
          "responseTime": "2018-11-06T16:30:23.355Z",
          "status": "success"
      }
    3. Den SAMLRequest aus der Antwort für die Verwendung in nachfolgenden Befehlen speichern.

      export SAMLREQUEST="https://my-pf-baseurl/idp/SSO.saml2?..."
    4. Die Antwort und den Cookie exportieren und die Antwort ausgeben:

      RESPONSE=$(curl -c - "$SAMLREQUEST")
      echo "$RESPONSE" | grep 'input type="hidden" name="pf.adapterId" id="pf.adapterId"'
    5. Den Wert 'pf.adapterId' exportieren und die Antwort ausgeben:

      export ADAPTER='myAdapter'
      echo "$RESPONSE" | grep 'base'
    6. Exportieren Sie den 'href'-Wert (entfernen Sie den abschließenden Schrägstrich /), und geben Sie die Antwort aus:

      export BASEURL='https://my-pf-baseurl'
      echo "$RESPONSE" | grep 'form method="POST"'
    7. Den Wert „action“ exportieren:

      export SSOPING='/idp/.../resumeSAML20/idp/SSO.ping'
    8. Cookies zusammen mit den Anmeldeinformationen senden:

      curl -b <(echo "$RESPONSE") -X POST "$BASEURL$SSOPING" \
      --data "pf.username=$SAMLUSER&pf.pass=$SAMLPASSWORD&pf.ok=clicked&pf.cancel=&pf.adapterId=$ADAPTER" --include
    9. Die Daten SAMLResponse aus dem versteckten Feld speichern:

      export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4='
    10. Mit den gespeicherten SAMLResponse kann eine StorageGRID/api/saml-response-Anfrage gestellt werden, um ein StorageGRID Authentifizierungs-Token zu generieren.

      Für RelayState verwenden Sie die Mandantenkonto-ID oder 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 Authentifizierungs-Token.

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

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

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

${post_edited_translations.segment}

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

Über diese Aufgabe

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

Schritte
  1. Um eine signierte Abmeldeanfrage zu generieren, wird cookie "sso=true" an die SLO API übergeben:

    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

    Eine Abmelde-URL wird zurückgegeben:

    {
        "apiVersion": "3.0",
        "data": "https://my-ping-url/idp/SLO.saml2?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D",
        "responseTime": "2021-10-12T22:20:30.839Z",
        "status": "success"
    }
  2. ${post_edited_translations.segment}

    export LOGOUT_REQUEST='https://my-ping-url/idp/SLO.saml2?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D'
  3. Eine Anfrage an die Logout-URL senden, um SLO auszulösen und zurück zu StorageGRID zu gelangen.

    curl --include "$LOGOUT_REQUEST"

    Es wird der Statuscode 302 zurückgegeben. Die Weiterleitungsadresse gilt nicht für die Abmeldung ausschließlich über die API.

    HTTP/1.1 302 Found
    Location: https://$STORAGEGRID_ADDRESS:443/api/saml-logout?SAMLResponse=fVLLasMwEPwVo7ss%...%23rsa-sha256
    Set-Cookie: PF=QoKs...SgCC; Path=/; Secure; HttpOnly; SameSite=None
  4. ${post_edited_translations.segment}

    Das Löschen des StorageGRID Bearer-Tokens funktioniert auf dieselbe Weise wie ohne SSO. Wenn das Cookie "sso=true" nicht bereitgestellt wird, 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

    Eine `204 No Content`Antwort signalisiert, dass der Benutzer jetzt abgemeldet ist.

    HTTP/1.1 204 No Content