Utilisez l'API si l'authentification unique est activée (PingFederate)
Si vous l'avez "Authentification unique (SSO) configurée et activée" De plus, 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 Grid Management ou l'API tenant Management.
Connectez-vous à l'API si l'authentification unique est activée
Ces instructions s'appliquent si vous utilisez PingFederate comme fournisseur d'identité SSO
-
Vous connaissez le nom d'utilisateur et le mot de passe SSO d'un utilisateur fédéré appartenant à un groupe d'utilisateurs StorageGRID.
-
Pour accéder à l'API de gestion des locataires, vous connaissez l'ID du compte locataire.
Pour obtenir un jeton d'authentification, vous pouvez utiliser l'un des exemples suivants :
-
Le
storagegrid-ssoauth.pyScript Python, situé dans le répertoire des fichiers d'installation de StorageGRID (./rpmsPour Red Hat Enterprise Linux ou CentOS,./debsPour Ubuntu ou Debian, et./vspherePour VMware). -
Un exemple de flux de travail des requêtes Curl.
Le flux de travail de boucle risque de s'échapper si vous l'effectuez trop lentement. L'erreur peut s'afficher :
A valid SubjectConfirmation was not found on this Response.L'exemple de flux de travail Curl ne protège pas le mot de passe d'être vu par d'autres utilisateurs. Si vous avez un problème de codage d'URL, l'erreur peut s'afficher :
Unsupported SAML version.
-
Sélectionnez l'une des méthodes suivantes pour obtenir un jeton d'authentification :
-
Utilisez le
storagegrid-ssoauth.pyScript Python. Passez à l'étape 2. -
Utiliser les demandes de gondoles. Passez à l'étape 3.
-
-
Si vous souhaitez utiliser le
storagegrid-ssoauth.pyPassez le script à l'interpréteur Python et exécutez le script.Lorsque vous y êtes invité, entrez des valeurs pour les arguments suivants :
-
Méthode SSO. Vous pouvez entrer n'importe quelle variation de ""pingdéin"" (PINGFEDERATE, pingfédéré, etc.).
-
Le nom d'utilisateur SSO
-
Domaine dans lequel StorageGRID est installé. Ce champ n'est pas utilisé pour PingFederate. Vous pouvez le laisser vide ou entrer n'importe quelle valeur.
-
L'adresse de StorageGRID
-
L'ID du compte de locataire, pour accéder à l'API de gestion des locataires.
Le jeton d'autorisation StorageGRID est fourni dans la sortie. Vous pouvez maintenant utiliser le token pour d'autres requêtes, de la même manière que vous utilisiez l'API si SSO n'était pas utilisé.
-
-
Si vous souhaitez utiliser des requêtes Curl, suivez la procédure ci-dessous.
-
Déclarez les variables nécessaires pour la connexion.
export SAMLUSER='my-sso-username' export SAMLPASSWORD='my-password' export TENANTACCOUNTID='12345' export STORAGEGRID_ADDRESS='storagegrid.example.com'Pour accéder à l'API de gestion de grille, utilisez 0 comme TENANTACCOUNTID. -
Pour recevoir une URL d'authentification signée, lancez une demande POST à
/api/v3/authorize-saml, Et supprimez le codage JSON supplémentaire de la réponse.Cet exemple montre une demande POST pour une URL d'authentification signée pour TENANTACCOUNTID. Les résultats seront transmis à python -m json.tool pour 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.toolLa réponse dans cet exemple inclut une URL signée codée par URL, mais n'inclut pas la couche supplémentaire de codage JSON.
{ "apiVersion": "3.0", "data": "https://my-pf-baseurl/idp/SSO.saml2?...", "responseTime": "2018-11-06T16:30:23.355Z", "status": "success" } -
Enregistrez le
SAMLRequestà partir de la réponse pour une utilisation dans les commandes suivantes.export SAMLREQUEST="https://my-pf-baseurl/idp/SSO.saml2?..."
-
Exportez la réponse et le cookie, et écho la réponse :
RESPONSE=$(curl -c - "$SAMLREQUEST")echo "$RESPONSE" | grep 'input type="hidden" name="pf.adapterId" id="pf.adapterId"' -
Exporter la valeur 'pf.adapterId' et réafficher la réponse :
export ADAPTER='myAdapter'
echo "$RESPONSE" | grep 'base' -
Exporter la valeur « href » (supprimer la barre oblique inverse /) et afficher en écho la réponse :
export BASEURL='https://my-pf-baseurl'
echo "$RESPONSE" | grep 'form method="POST"' -
Exporter la valeur « action » :
export SSOPING='/idp/.../resumeSAML20/idp/SSO.ping'
-
Envoyer des cookies avec des informations d'identification :
curl -b <(echo "$RESPONSE") -X POST "$BASEURL$SSOPING" \ --data "pf.username=$SAMLUSER&pf.pass=$SAMLPASSWORD&pf.ok=clicked&pf.cancel=&pf.adapterId=$ADAPTER" --include -
Enregistrez le
SAMLResponsedans le champ masqué :export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4=' -
À l'aide de la sauvegarde
SAMLResponse, Faire un StorageGRID/api/saml-responseDemande de génération d'un jeton d'authentification StorageGRID.Pour
RelayState, Utilisez l'ID du compte locataire ou 0 si vous souhaitez vous connecter à l'API Grid Management.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 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" }-
Enregistrez le jeton d'authentification dans la réponse sous
MYTOKEN.export MYTOKEN="56eb07bf-21f6-40b7-af0b-5c6cacfb25e7"Vous pouvez maintenant utiliser
MYTOKENPour les autres demandes, comme le ferait l'utilisation de l'API si SSO n'était pas utilisé.
-
Déconnectez-vous de l'API si l'authentification unique est activée
Si l'authentification unique (SSO) a été activée, vous devez émettre une série de requêtes API pour vous déconnecter de l'API de gestion Grid ou de l'API de gestion des locataires. Ces instructions s'appliquent si vous utilisez PingFederate comme fournisseur d'identité SSO
Si nécessaire, vous pouvez vous déconnecter de l'API StorageGRID en vous déconnectant de la page de déconnexion unique de votre organisation. Vous pouvez également déclencher une déconnexion unique (SLO) à partir de StorageGRID, ce qui nécessite un jeton de porteur StorageGRID valide.
-
Pour générer une demande de déconnexion signée, passez
cookie "sso=true"Pour 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.toolUne 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" } -
Enregistrez l'URL de déconnexion.
export LOGOUT_REQUEST='https://my-ping-url/idp/SLO.saml2?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D' -
Envoyez une demande à l'URL de déconnexion pour déclencher SLO et rerediriger vers StorageGRID.
curl --include "$LOGOUT_REQUEST"La réponse 302 est renvoyée. L'emplacement de redirection ne s'applique pas à la déconnexion 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
-
Supprimez le jeton de support StorageGRID.
La suppression du jeton de support StorageGRID fonctionne de la même manière que sans SSO. Si
cookie "sso=true"Non fourni, l'utilisateur est déconnecté de StorageGRID sans affecter l'état SSO.curl -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \ -H "accept: application/json" \ -H "Authorization: Bearer $MYTOKEN" \ --includeA
204 No Contentreponse indique que l'utilisateur est déconnecté.HTTP/1.1 204 No Content