Utilizzare l'API se è attivato il Single Sign-on (PingFederate)
Se hai"SSO (Single Sign-on) configurato e abilitato" 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.
Accedere all'API se è attivato il Single Sign-on
Queste istruzioni sono valide se si utilizza PingFederate come provider di identità SSO
-
Si conoscono il nome utente e la password SSO di un utente federated appartenente a un gruppo di utenti StorageGRID.
-
Se si desidera accedere all'API di gestione tenant, si conosce l'ID account tenant.
Per ottenere un token di autenticazione, è possibile utilizzare uno dei seguenti esempi:
-
IL
storagegrid-ssoauth.pyScript Python, che si trova nella directory dei file di installazione StorageGRID(./rpmsper RHEL,./debsper Ubuntu o Debian, e./vsphereper VMware). -
Un esempio di workflow di richieste di curl.
Il flusso di lavoro di arricciatura potrebbe andare in timeout se viene eseguito troppo lentamente. Potrebbe essere visualizzato l'errore:
A valid SubjectConfirmation was not found on this Response.L'esempio di workflow di curl non protegge la password da essere vista da altri utenti. Se si verifica un problema di codifica URL, potrebbe essere visualizzato l'errore:
Unsupported SAML version.
-
Selezionare uno dei seguenti metodi per ottenere un token di autenticazione:
-
Utilizzare
storagegrid-ssoauth.pylo script Python. Andare alla fase 2. -
USA richieste di curl. Andare alla fase 3.
-
-
Se si desidera utilizzare
storagegrid-ssoauth.pylo script, passare lo script all'interprete Python ed eseguire lo script.Quando richiesto, inserire i valori per i seguenti argomenti:
-
Il metodo SSO. È possibile inserire qualsiasi variazione di "pingfederate" (PINGFEDERATE, pingfederate e così via).
-
Il nome utente SSO
-
Il dominio in cui è installato StorageGRID. Questo campo non viene utilizzato per PingFederate. È possibile lasciare vuoto il campo o inserire un valore qualsiasi.
-
L'indirizzo per StorageGRID
-
L'ID account tenant, se si desidera accedere all'API di gestione tenant.
Il token di autorizzazione StorageGRID viene fornito nell'output. È ora possibile utilizzare il token per altre richieste, in modo simile a come si utilizzerebbe l'API se SSO non fosse utilizzato.
-
-
Se si desidera utilizzare le richieste di arricciamento, attenersi alla seguente procedura.
-
Dichiarare le variabili necessarie per l'accesso.
export SAMLUSER='my-sso-username' export SAMLPASSWORD='my-password' export TENANTACCOUNTID='12345' export STORAGEGRID_ADDRESS='storagegrid.example.com'Per accedere all'API Grid Management, utilizzare 0 come TENANTACCOUNTID. -
Per ricevere un URL di autenticazione firmato, inviare una richiesta POST a
/api/v3/authorize-samle 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.toolLa risposta per questo esempio include un URL firmato con codifica URL, ma non include il layer di codifica JSON aggiuntivo.
{ "apiVersion": "3.0", "data": "https://my-pf-baseurl/idp/SSO.saml2?...", "responseTime": "2018-11-06T16:30:23.355Z", "status": "success" } -
Salvare
SAMLRequestdalla risposta per l'utilizzo nei comandi successivi.export SAMLREQUEST="https://my-pf-baseurl/idp/SSO.saml2?..."
-
Esportare la risposta e il cookie e visualizzare la risposta:
RESPONSE=$(curl -c - "$SAMLREQUEST")echo "$RESPONSE" | grep 'input type="hidden" name="pf.adapterId" id="pf.adapterId"' -
Esportare il valore 'pf.adapterId' e visualizzare la risposta:
export ADAPTER='myAdapter'
echo "$RESPONSE" | grep 'base' -
Esportare il valore 'href' (rimuovere la barra finale /) e visualizzare la risposta:
export BASEURL='https://my-pf-baseurl'
echo "$RESPONSE" | grep 'form method="POST"' -
Esportare il valore "azione":
export SSOPING='/idp/.../resumeSAML20/idp/SSO.ping'
-
Invia cookie con 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 -
Salvare il
SAMLResponsedal campo nascosto:export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4=' -
Utilizzando il salvato
SAMLResponse, eseguire una richiesta StorageGRID/api/saml-responseper generare un token di autenticazione StorageGRID.Per
RelayState, utilizzare l'ID account tenant o 0 se si desidera accedere all'API di gestione 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.toolLa risposta include il token di autenticazione.
{ "apiVersion": "3.0", "data": "56eb07bf-21f6-40b7-af0b-5c6cacfb25e7", "responseTime": "2018-11-07T21:32:53.486Z", "status": "success" }-
Salvare il token di autenticazione nella risposta come
MYTOKEN.export MYTOKEN="56eb07bf-21f6-40b7-af0b-5c6cacfb25e7"È ora possibile utilizzare
MYTOKENper altre richieste, in modo simile a come si userebbe l'API se non fosse utilizzato SSO.
-
Disconnettersi dall'API se è attivato il Single Sign-on
Se è stato attivato il Single Sign-on (SSO), è necessario emettere una serie di richieste API per disconnettersi dall'API Grid Management o dall'API Tenant Management. Queste istruzioni sono valide se si utilizza PingFederate come provider di identità SSO
Se necessario, è possibile disconnettersi dall'API StorageGRID disconnettendosi dalla singola pagina di disconnessione dell'organizzazione. In alternativa, è possibile attivare il logout singolo (SLO) da StorageGRID, che richiede un token bearer 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.toolViene 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" } -
Salvare 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 API-only.
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 del bearer StorageGRID.
L'eliminazione del token portante StorageGRID funziona come senza SSO. Se `cookie "sso=true" non viene fornito, l'utente viene disconnesso da StorageGRID senza influire sullo stato SSO.
curl -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \ -H "accept: application/json" \ -H "Authorization: Bearer $MYTOKEN" \ --includeUna
204 No Contentrisposta indica che l'utente è stato disconnesso.HTTP/1.1 204 No Content