Verwenden Sie die API, wenn Single Sign-On aktiviert ist (PingFederate)
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
-
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:
-
Der
storagegrid-ssoauth.py
Python-Skript, das sich im Verzeichnis der Installationsdateien von StorageGRID befindet (./rpms
Für Red hat Enterprise Linux,./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
.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
.
-
Wählen Sie eine der folgenden Methoden aus, um ein Authentifizierungs-Token zu erhalten:
-
Verwenden Sie die
storagegrid-ssoauth.py
Python-Skript Weiter mit Schritt 2. -
Verwenden Sie Curl-Anforderungen. Fahren Sie mit Schritt 3 fort.
-
-
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" 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, 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" }
-
Speichern Sie die
SAMLRequest
Aus der Antwort zur 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 die
SAMLResponse
Aus dem ausgeblendeten Feld:export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4='
-
Verwenden des gespeicherten
SAMLResponse
, Erstellen Sie eine StorageGRID/api/saml-response
Anforderung zum Generieren eines StorageGRID-Authentifizierungs-TokensFü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 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
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
A
204 No Content
Die Antwort zeigt an, dass der Benutzer jetzt abgemeldet ist.HTTP/1.1 204 No Content