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 haben "Konfiguration und Aktivierung von Single Sign On (SSO)" Und Sie verwenden PingFederate als SSO-Provider. Um ein Authentifizierungs-Token zu erhalten, das für die Grid Management API oder die Mandantenmanagement-API gültig ist, müssen Sie eine Reihe von API-Anforderungen ausgeben.

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:

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

  • 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.

    Falls Sie ein Problem mit der URL-Codierung 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 die storagegrid-ssoauth.py Python-Skript Fahren Sie mit Schritt 2 fort.

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

  2. Wenn Sie den verwenden möchten storagegrid-ssoauth.py Skript, ü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“ (PINGFEDERATE, pingfederate usw.) eingeben.

    • 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, 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 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 zur 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 die SAMLResponse Aus dem ausgeblendeten Feld:

      export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4='
    10. Verwenden des gespeicherten SAMLResponse, Erstellen Sie eine StorageGRID/api/saml-response Anforderung zum Generieren eines StorageGRID-Authentifizierungs-Tokens

      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 Authentifizierungs-Token in der Antwort als MYTOKEN.

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

      Jetzt können Sie verwenden MYTOKEN Für andere Anfragen, ähnlich wie Sie die API verwenden würden, wenn SSO nicht verwendet wurde.

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 signierte Abmeldeanforderung zu erstellen, übergeben cookie "sso=true" Zur 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" Wird nicht angegeben, 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