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 (PingFederate)

Beitragende

Wenn Sie "Konfiguration und Aktivierung von Single Sign On (SSO)"PingFederate als SSO-Provider verwenden, müssen Sie eine Reihe von API-Anforderungen ausgeben, um ein Authentifizierungstoken zu erhalten, das für die Grid Management API oder die Tenant Management API gültig ist.

Melden Sie sich bei der API an, wenn Single Sign-On aktiviert ist

Diese Anweisungen gelten, wenn Sie PingFederate als SSO-Identitäts-Provider verwenden

Bevor Sie beginnen
  • Sie kennen den SSO-Benutzernamen und das Passwort für einen föderierten Benutzer, der einer StorageGRID-Benutzergruppe angehört.

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

Über diese Aufgabe

Um ein Authentifizierungs-Token zu erhalten, können Sie eines der folgenden Beispiele verwenden:

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

  • Ein Beispielworkflow von Curl-Anforderungen.

    Der Curl-Workflow kann sich aushalten, wenn Sie ihn zu langsam ausführen. Möglicherweise wird der Fehler angezeigt: A valid SubjectConfirmation was not found on this Response.

    Hinweis Der Beispiel-Curl-Workflow schützt das Passwort nicht vor der Sicht anderer Benutzer.

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

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

    • Verwenden Sie das storagegrid-ssoauth.py Python-Skript. Weiter mit Schritt 2.

    • Verwenden Sie Curl-Anforderungen. Weiter mit Schritt 3.

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

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

    • Die SSO-Methode. Sie können eine beliebige Variante von "pingfederate" eingeben (PINGFEDERATE, PINGFEDERATE usw.).

    • Der SSO-Benutzername

    • Die Domäne, in der StorageGRID installiert ist. Dieses Feld wird nicht für PingFederate verwendet. Sie können es leer lassen oder einen beliebigen Wert eingeben.

    • Die Adresse für StorageGRID

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

      SSO Authentication Script für Ping Federate

    Das StorageGRID-Autorisierungs-Token wird in der Ausgabe bereitgestellt. Sie können das Token jetzt auch für andere Anforderungen verwenden. Dies entspricht der Verwendung der API, wenn SSO nicht verwendet wurde.

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

    1. Deklarieren der Variablen, die für die Anmeldung erforderlich sind.

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

      Dieses Beispiel zeigt eine POST-Anforderung für eine signierte Authentifizierungs-URL für TENANTACCOUNTID. Die Ergebnisse werden an Python -m json.Tool übergeben, um die JSON-Codierung 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-Kodierungsschicht enthält.

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

      export SAMLREQUEST="https://my-pf-baseurl/idp/SSO.saml2?..."
    4. Exportieren Sie die Antwort und das Cookie, und wiederholen Sie die Antwort:

      RESPONSE=$(curl -c - "$SAMLREQUEST")
      echo "$RESPONSE" | grep 'input type="hidden" name="pf.adapterId" id="pf.adapterId"'
    5. Exportieren Sie den Wert „pf.adaptterId“, und geben Sie die Antwort ein:

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

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

      export SSOPING='/idp/.../resumeSAML20/idp/SSO.ping'
    8. Senden von Cookies zusammen mit den Zugangsdaten:

      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. Speichern Sie den SAMLResponse aus dem ausgeblendeten Feld:

      export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4='
    10. Erstellen Sie mit dem gespeicherten SAMLResponse eine StorageGRID-/api/saml-responseAnforderung, um ein StorageGRID-Authentifizierungstoken zu generieren.

      Für RelayState verwenden Sie die Mandanten-Konto-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 umfasst das Authentifizierungs-Token.

    {
        "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 verwenden, ä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 ist, müssen Sie eine Reihe von API-Anforderungen zum Abzeichnen der Grid Management API oder der Mandantenmanagement-API ausstellen. Diese Anweisungen gelten, wenn Sie PingFederate als SSO-Identitäts-Provider verwenden

Über diese Aufgabe

Falls erforderlich, können Sie sich von der StorageGRID-API abmelden, indem Sie sich von der einzelnen Abmeldeseite Ihres Unternehmens abmelden. Alternativ können Sie einzelne Abmeldungen (SLO) von StorageGRID auslösen, was ein gültiges StorageGRID-Überträger-Token erfordert.

Schritte
  1. Um eine Anforderung für eine signierte Abmeldung 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 Abmeldung-URL 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. Speichern Sie die Abmeldung-URL.

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

    curl --include "$LOGOUT_REQUEST"

    Die Antwort 302 wird zurückgegeben. Der Umleitungsort gilt nicht für die nur-API-Abmeldung.

    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. Löschen Sie das StorageGRID-Überträger-Token.

    Das Löschen des StorageGRID-Inhabertoken funktioniert auf die gleiche Weise wie ohne SSO. Wenn `Cookie „sso=true“ nicht angegeben wird, wird der Benutzer ohne Beeinträchtigung des SSO-Status bei StorageGRID abgemeldet.

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

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

    HTTP/1.1 204 No Content