Verwenden Sie die API, wenn Single Sign-On aktiviert ist (PingFederate)
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
-
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.
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
.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
.
-
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.
-
-
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.
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.
-
-
Wenn Sie Curl-Anforderungen verwenden möchten, gehen Sie wie folgt vor.
-
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'
Um auf die Grid-Management-API zuzugreifen, verwenden Sie 0 als TENANTACCOUNTID
. -
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" }
-
Speichern Sie die
SAMLRequest
aus der Antwort für die Verwendung in nachfolgenden Befehlen.export SAMLREQUEST="https://my-pf-baseurl/idp/SSO.saml2?..."
-
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"'
-
Exportieren Sie den Wert „pf.adaptterId“, und geben Sie die Antwort ein:
export ADAPTER='myAdapter'
echo "$RESPONSE" | grep 'base'
-
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"'
-
Den Wert „Aktion“ exportieren:
export SSOPING='/idp/.../resumeSAML20/idp/SSO.ping'
-
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
-
Speichern Sie den
SAMLResponse
aus dem ausgeblendeten Feld:export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4='
-
Erstellen Sie mit dem gespeicherten
SAMLResponse
eine StorageGRID-/api/saml-response
Anforderung, 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" }
-
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
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.
-
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" }
-
Speichern Sie die Abmeldung-URL.
export LOGOUT_REQUEST='https://my-ping-url/idp/SLO.saml2?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D'
-
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
-
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