Utilizzare l'API se è abilitato l'accesso singolo (PingFederate)
Se hai"configurato e abilitato l'accesso singolo (SSO)" e utilizzi PingFederate come provider SSO, devi inviare una serie di richieste API per ottenere un token di autenticazione valido per l'API Grid Management o l'API Tenant Management.
Sign in all'API se è abilitato l'accesso singolo
Queste istruzioni si applicano se si utilizza PingFederate come provider di identità SSO
-
Conosci il nome utente e la password SSO di un utente federato che appartiene a un gruppo di utenti StorageGRID .
-
Se vuoi accedere all'API di gestione tenant, devi conoscere l'ID dell'account tenant.
Per ottenere un token di autenticazione, puoi utilizzare uno dei seguenti esempi:
-
IL
storagegrid-ssoauth.py
Script Python, che si trova nella directory dei file di installazione StorageGRID(./rpms
per Red Hat Enterprise Linux,./debs
per Ubuntu o Debian, e./vsphere
per VMware). -
Un esempio di flusso di lavoro delle richieste curl.
Il flusso di lavoro curl potrebbe interrompersi se eseguito troppo lentamente. Potresti visualizzare l'errore:
A valid SubjectConfirmation was not found on this Response
.Il flusso di lavoro curl di esempio non protegge la password dalla visualizzazione da parte di altri utenti. Se riscontri un problema di codifica URL, potresti visualizzare l'errore:
Unsupported SAML version
.
-
Selezionare uno dei seguenti metodi per ottenere un token di autenticazione:
-
Utilizzare il
storagegrid-ssoauth.py
Script Python. Vai al passaggio 2. -
Utilizzare le richieste curl. Vai al passaggio 3.
-
-
Se vuoi usare il
storagegrid-ssoauth.py
script, passa lo script all'interprete Python ed esegui lo script.Quando richiesto, immettere i valori per i seguenti argomenti:
-
Il metodo SSO. È possibile immettere qualsiasi variante di "pingfederate" (PINGFEDERATE, pingfederate e così via).
-
Il nome utente SSO
-
Il dominio in cui è installato StorageGRID . Questo campo non è utilizzato per PingFederate. Puoi lasciarlo vuoto o inserire qualsiasi valore.
-
L'indirizzo per StorageGRID
-
ID dell'account tenant, se si desidera accedere all'API di gestione tenant.
Il token di autorizzazione StorageGRID viene fornito nell'output. Ora puoi utilizzare il token per altre richieste, in modo simile a come utilizzeresti l'API se non utilizzassi l'SSO.
-
-
Se si desidera utilizzare le richieste curl, attenersi alla seguente procedura.
-
Dichiarare le variabili necessarie per effettuare l'accesso.
export SAMLUSER='my-sso-username' export SAMLPASSWORD='my-password' export TENANTACCOUNTID='12345' export STORAGEGRID_ADDRESS='storagegrid.example.com'
Per accedere all'API di gestione della griglia, utilizzare 0 come TENANTACCOUNTID
. -
Per ricevere un URL di autenticazione firmato, inviare una richiesta POST a
/api/v3/authorize-saml
e rimuovere la codifica JSON aggiuntiva dalla risposta.Questo esempio mostra una richiesta POST per un URL di autenticazione firmato per TENANTACCOUNTID. I risultati verranno passati a python -m json.tool per rimuovere la codifica JSON.
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
La risposta per questo esempio include un URL firmato codificato in URL, ma non include il livello di codifica JSON aggiuntivo.
{ "apiVersion": "3.0", "data": "https://my-pf-baseurl/idp/SSO.saml2?...", "responseTime": "2018-11-06T16:30:23.355Z", "status": "success" }
-
Salva il
SAMLRequest
dalla risposta per utilizzarla nei comandi successivi.export SAMLREQUEST="https://my-pf-baseurl/idp/SSO.saml2?..."
-
Esporta la risposta e il cookie e ripeti la risposta:
RESPONSE=$(curl -c - "$SAMLREQUEST")
echo "$RESPONSE" | grep 'input type="hidden" name="pf.adapterId" id="pf.adapterId"'
-
Esporta il valore 'pf.adapterId' e riproduci la risposta:
export ADAPTER='myAdapter'
echo "$RESPONSE" | grep 'base'
-
Esporta il valore 'href' (rimuovi la barra finale /) e riproduci la risposta:
export BASEURL='https://my-pf-baseurl'
echo "$RESPONSE" | grep 'form method="POST"'
-
Esporta il valore 'azione':
export SSOPING='/idp/.../resumeSAML20/idp/SSO.ping'
-
Invia i cookie insieme alle credenziali:
curl -b <(echo "$RESPONSE") -X POST "$BASEURL$SSOPING" \ --data "pf.username=$SAMLUSER&pf.pass=$SAMLPASSWORD&pf.ok=clicked&pf.cancel=&pf.adapterId=$ADAPTER" --include
-
Salva il
SAMLResponse
dal campo nascosto:export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4='
-
Utilizzando il salvato
SAMLResponse
, crea uno StorageGRID/api/saml-response
richiesta di generazione di un token di autenticazione StorageGRID .Per
RelayState
, utilizzare l'ID dell'account tenant oppure utilizzare 0 se si desidera accedere all'API di gestione della griglia.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
La risposta include il token di autenticazione.
{ "apiVersion": "3.0", "data": "56eb07bf-21f6-40b7-af0b-5c6cacfb25e7", "responseTime": "2018-11-07T21:32:53.486Z", "status": "success" }
-
Salva il token di autenticazione nella risposta come
MYTOKEN
.export MYTOKEN="56eb07bf-21f6-40b7-af0b-5c6cacfb25e7"
Ora puoi usare
MYTOKEN
per altre richieste, in modo simile a come utilizzeresti l'API se non si utilizzasse l'SSO.
-
Disconnettersi dall'API se è abilitato l'accesso singolo
Se è stato abilitato l'accesso singolo (SSO), è necessario inviare una serie di richieste API per disconnettersi dall'API di gestione della griglia o dall'API di gestione dei tenant. Queste istruzioni si applicano se si utilizza PingFederate come provider di identità SSO
Se necessario, puoi disconnetterti dall'API StorageGRID effettuando il logout dalla pagina di disconnessione singola della tua organizzazione. In alternativa, è possibile attivare il single logout (SLO) da StorageGRID, che richiede un token portatore StorageGRID valido.
-
Per generare una richiesta di disconnessione firmata, passare `cookie "sso=true" all'API SLO:
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
Viene restituito un URL di disconnessione:
{ "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" }
-
Salva l'URL di disconnessione.
export LOGOUT_REQUEST='https://my-ping-url/idp/SLO.saml2?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D'
-
Inviare una richiesta all'URL di disconnessione per attivare SLO e reindirizzare a StorageGRID.
curl --include "$LOGOUT_REQUEST"
Viene restituita la risposta 302. La posizione di reindirizzamento non è applicabile alla disconnessione solo tramite 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
-
Eliminare il token portatore StorageGRID .
L'eliminazione del token portatore StorageGRID funziona allo stesso modo dell'eliminazione senza SSO. Se non viene specificato `cookie "sso=true", l'utente viene disconnesso da StorageGRID senza che ciò influisca sullo stato SSO.
curl -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \ -H "accept: application/json" \ -H "Authorization: Bearer $MYTOKEN" \ --include
UN
204 No Content
la risposta indica che l'utente è ora disconnesso.HTTP/1.1 204 No Content