Skip to main content
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

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

Prima di iniziare
  • 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.

Informazioni su questo compito

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 .

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

Passi
  1. 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.

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

      Script di autenticazione SSO per Ping Federate

    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.

  3. Se si desidera utilizzare le richieste curl, attenersi alla seguente procedura.

    1. 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'
      Nota Per accedere all'API di gestione della griglia, utilizzare 0 come TENANTACCOUNTID .
    2. 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"
      }
    3. Salva il SAMLRequest dalla risposta per utilizzarla nei comandi successivi.

      export SAMLREQUEST="https://my-pf-baseurl/idp/SSO.saml2?..."
    4. 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"'
    5. Esporta il valore 'pf.adapterId' e riproduci la risposta:

      export ADAPTER='myAdapter'
      echo "$RESPONSE" | grep 'base'
    6. Esporta il valore 'href' (rimuovi la barra finale /) e riproduci la risposta:

      export BASEURL='https://my-pf-baseurl'
      echo "$RESPONSE" | grep 'form method="POST"'
    7. Esporta il valore 'azione':

      export SSOPING='/idp/.../resumeSAML20/idp/SSO.ping'
    8. 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
    9. Salva il SAMLResponse dal campo nascosto:

      export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4='
    10. 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"
    }
    1. 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

Informazioni su questo compito

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.

Passi
  1. 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"
    }
  2. Salva l'URL di disconnessione.

    export LOGOUT_REQUEST='https://my-ping-url/idp/SLO.saml2?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D'
  3. 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
  4. 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