Skip to main content
Une version plus récente de ce produit est disponible.
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Utilisez l'API StorageGRID si l'authentification unique est activée (PingFederate)

Si vous avez "authentification unique (SSO) configurée et activée" et que vous utilisez PingFederate comme fournisseur SSO, vous devez émettre une série de requêtes API pour obtenir un jeton d'authentification valide pour l'API de gestion de la grille ou l'API de gestion des locataires.

Connectez-vous à l'API si l'authentification unique est activée

Ces instructions s'appliquent si vous utilisez PingFederate comme fournisseur d'identité SSO

Avant de commencer
  • Vous connaissez le nom d'utilisateur et le mot de passe SSO d'un utilisateur fédéré qui appartient à un groupe d'utilisateurs StorageGRID.

  • Pour accéder à l'API de gestion des locataires, vous devez connaître l'identifiant du compte locataire.

À propos de cette tâche

Pour obtenir un jeton d'authentification, vous pouvez utiliser l'un des exemples suivants :

  • Le storagegrid-ssoauth.py script Python, qui se trouve dans le répertoire des fichiers d'installation de StorageGRID (./rpms pour RHEL, ./debs pour Ubuntu ou Debian, et ./vsphere pour VMware).

  • Un exemple de workflow de requêtes curl.

    Le flux de travail curl peut expirer si vous l'exécutez trop lentement. Vous pourriez voir l'erreur : A valid SubjectConfirmation was not found on this Response.

    Remarque Le flux de travail curl présenté en exemple ne protège pas le mot de passe contre la consultation par d'autres utilisateurs.

    Si vous rencontrez un problème d'encodage d'URL, vous pourriez voir l'erreur : Unsupported SAML version.

Étapes
  1. Sélectionnez l'une des méthodes suivantes pour obtenir un jeton d'authentification :

    • Utilisez le storagegrid-ssoauth.py script Python. Passez à l’étape 2.

    • Utilisez les requêtes curl. Passez à l'étape 3.

  2. Si vous souhaitez utiliser le storagegrid-ssoauth.py script, transmettez le script à l’interpréteur Python et exécutez le script.

    Lorsque vous y êtes invité, saisissez les valeurs des arguments suivants :

    • La méthode SSO. Vous pouvez saisir n'importe quelle variante de « pingfederate » (PINGFEDERATE, pingfederate, etc.).

    • Nom d'utilisateur SSO

    • Le domaine où StorageGRID est installé. Ce champ n'est pas utilisé pour PingFederate. Vous pouvez le laisser vide ou saisir une valeur quelconque.

    • L'adresse de StorageGRID

    • L'identifiant du compte locataire, si vous souhaitez accéder à l'API de gestion des locataires.

      Script d'authentification SSO pour Ping Federate

    Le jeton d'autorisation StorageGRID est fourni dans le résultat. Vous pouvez désormais utiliser le jeton pour d'autres requêtes, comme vous le feriez avec l'API si l'authentification unique n'était pas utilisée.

  3. Si vous souhaitez utiliser des requêtes curl, suivez la procédure suivante.

    1. Déclarez les variables nécessaires à la connexion.

      export SAMLUSER='my-sso-username'
      export SAMLPASSWORD='my-password'
      export TENANTACCOUNTID='12345'
      export STORAGEGRID_ADDRESS='storagegrid.example.com'
      Remarque Pour accéder à l'API de gestion de la grille, utilisez 0 comme TENANTACCOUNTID.
    2. Pour recevoir une URL d'authentification signée, envoyez une requête POST à /api/v3/authorize-saml, et supprimez l'encodage JSON supplémentaire de la réponse.

      Cet exemple illustre une requête POST pour obtenir une URL d'authentification signée pour TENANTACCOUNTID. Les résultats seront transmis à python -m json.tool afin de supprimer l'encodage 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 réponse pour cet exemple inclut une URL signée et encodée en URL, mais elle n'inclut pas la couche d'encodage JSON supplémentaire.

      {
          "apiVersion": "3.0",
          "data": "https://my-pf-baseurl/idp/SSO.saml2?...",
          "responseTime": "2018-11-06T16:30:23.355Z",
          "status": "success"
      }
    3. Enregistrez le SAMLRequest de la réponse pour l’utiliser dans les commandes suivantes.

      export SAMLREQUEST="https://my-pf-baseurl/idp/SSO.saml2?..."
    4. Exportez la réponse et le cookie, puis affichez la réponse :

      RESPONSE=$(curl -c - "$SAMLREQUEST")
      echo "$RESPONSE" | grep 'input type="hidden" name="pf.adapterId" id="pf.adapterId"'
    5. Exportez la valeur « pf.adapterId » et affichez la réponse :

      export ADAPTER='myAdapter'
      echo "$RESPONSE" | grep 'base'
    6. Exportez la valeur « href » (supprimez la barre oblique finale /) et affichez la réponse :

      export BASEURL='https://my-pf-baseurl'
      echo "$RESPONSE" | grep 'form method="POST"'
    7. Exportez la valeur « action » :

      export SSOPING='/idp/.../resumeSAML20/idp/SSO.ping'
    8. Envoyez les cookies avec les identifiants :

      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. Enregistrez le SAMLResponse du champ caché :

      export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4='
    10. À l'aide des données enregistrées SAMLResponse, effectuez une demande StorageGRID/api/saml-response pour générer un jeton d'authentification StorageGRID.

      Pour RelayState, utilisez l’ID du compte locataire ou 0 si vous souhaitez vous connecter à l’API de gestion de la grille.

      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 réponse inclut le jeton d'authentification.

    {
        "apiVersion": "3.0",
        "data": "56eb07bf-21f6-40b7-af0b-5c6cacfb25e7",
        "responseTime": "2018-11-07T21:32:53.486Z",
        "status": "success"
    }
    1. Enregistrez le jeton d'authentification dans la réponse en tant que MYTOKEN.

      export MYTOKEN="56eb07bf-21f6-40b7-af0b-5c6cacfb25e7"

      Vous pouvez désormais utiliser MYTOKEN pour d'autres requêtes, de la même manière que vous utiliseriez l'API si l'authentification unique n'était pas utilisée.

Déconnectez-vous de l'API si l'authentification unique est activée

Si l'authentification unique (SSO) est activée, vous devez effectuer une série de requêtes API pour vous déconnecter de l'API de gestion de la grille ou de l'API de gestion des locataires. Ces instructions s'appliquent si vous utilisez PingFederate comme fournisseur d'identité SSO

À propos de cette tâche

Si nécessaire, vous pouvez vous déconnecter de l'API StorageGRID depuis la page de déconnexion unique de votre organisation. Ou, vous pouvez déclencher une déconnexion unique (SLO) depuis StorageGRID, ce qui requiert un jeton d'authentification StorageGRID valide.

Étapes
  1. Pour générer une requête de déconnexion signée, transmettez le `cookie "sso=true" à l'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

    Une URL de déconnexion est renvoyée :

    {
        "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. Enregistrez l'URL de déconnexion.

    export LOGOUT_REQUEST='https://my-ping-url/idp/SLO.saml2?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D'
  3. Envoyez une requête à l'URL de déconnexion pour déclencher le SLO et pour être redirigé vers StorageGRID.

    curl --include "$LOGOUT_REQUEST"

    La réponse 302 est renvoyée. L'emplacement de redirection n'est pas applicable à la déconnexion via l'API uniquement.

    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. Supprimez le jeton porteur StorageGRID.

    La suppression du jeton d'accès StorageGRID fonctionne de la même manière qu'en l'absence d'authentification unique (SSO). Si le cookie « sso=true » n'est pas fourni, l'utilisateur est déconnecté de StorageGRID sans affecter l'état de l'authentification unique.

    curl -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \
    -H "accept: application/json" \
    -H "Authorization: Bearer $MYTOKEN" \
    --include

    Une `204 No Content`réponse indique que l'utilisateur est maintenant déconnecté.

    HTTP/1.1 204 No Content