Usa la API de StorageGRID si el inicio de sesión único está activado (PingFederate)
Si tienes "configurado y activado el inicio de sesión único (SSO)" y usas PingFederate como proveedor de inicio de sesión único, debes realizar una serie de solicitudes de API para obtener un token de autenticación válido para la Grid Management API o la Tenant Management API.
Inicia sesión en la API si está activado el inicio de sesión único
Estas instrucciones aplican si usas PingFederate como proveedor de identidad de SSO
-
Conoces el nombre de usuario y la contraseña de inicio de sesión único de un usuario federado que pertenece a un grupo de usuarios de StorageGRID.
-
Si quieres acceder a la API de gestión de inquilinos, sabes el ID de la cuenta del inquilino.
Para obtener un token de autenticación, puedes usar uno de los siguientes ejemplos:
-
El script de Python
storagegrid-ssoauth.py, que se encuentra en el directorio de archivos de instalación de StorageGRID (./rpmspara RHEL,./debspara Ubuntu o Debian, y./vspherepara VMware). -
Un ejemplo de flujo de trabajo de solicitudes con curl.
El flujo de trabajo de curl podría agotar el tiempo de espera si lo ejecutas demasiado despacio. Es posible que aparezca el siguiente error:
A valid SubjectConfirmation was not found on this Response.El flujo de trabajo de ejemplo de curl no protege la contraseña de ser vista por otros usuarios. Si tienes un problema de codificación de URL, es posible que veas el error:
Unsupported SAML version.
-
Selecciona uno de los siguientes métodos para obtener un token de autenticación:
-
Utiliza el
storagegrid-ssoauth.pyscript de Python. Ve al paso 2. -
Utiliza solicitudes con curl. Ve al paso 3.
-
-
Si quieres utilizar el script
storagegrid-ssoauth.py, pásalo al intérprete de Python y ejecútalo.Cuando se te solicite, introduce los valores para los siguientes argumentos:
-
El método SSO. Puedes introducir cualquier variante de «pingfederate» (PINGFEDERATE, pingfederate, y así sucesivamente).
-
El nombre de usuario de SSO
-
El dominio en el que está instalado StorageGRID. Este campo no se utiliza para PingFederate. Puedes dejarlo en blanco o ingresar cualquier valor.
-
La dirección de StorageGRID
-
El ID de la cuenta del tenant, si deseas acceder a la API de Tenant Management.

El token de autorización de StorageGRID aparece en la salida. Ahora puedes utilizar el token para otras solicitudes, de forma similar a como lo harías si no se utilizara el inicio de sesión único.
-
-
Si quieres utilizar solicitudes curl, usa el siguiente procedimiento.
-
Declara las variables necesarias para iniciar sesión.
export SAMLUSER='my-sso-username' export SAMLPASSWORD='my-password' export TENANTACCOUNTID='12345' export STORAGEGRID_ADDRESS='storagegrid.example.com'Para acceder a la API de gestión de la red, utiliza 0 como TENANTACCOUNTID. -
Para recibir una URL de autenticación firmada, envía una solicitud POST a
/api/v3/authorize-samly elimina la codificación JSON adicional de la respuesta.Este ejemplo muestra una solicitud POST para una URL de autenticación firmada para TENANTACCOUNTID. Los resultados se pasan a python -m json.tool para eliminar la codificación 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 respuesta de este ejemplo incluye una URL firmada que está codificada como URL, pero no incluye la capa adicional de codificación JSON.
{ "apiVersion": "3.0", "data": "https://my-pf-baseurl/idp/SSO.saml2?...", "responseTime": "2018-11-06T16:30:23.355Z", "status": "success" } -
Guarda el
SAMLRequestde la respuesta para usarlo en comandos posteriores.export SAMLREQUEST="https://my-pf-baseurl/idp/SSO.saml2?..."
-
Exporta la respuesta y la cookie, y muestra la respuesta:
RESPONSE=$(curl -c - "$SAMLREQUEST")echo "$RESPONSE" | grep 'input type="hidden" name="pf.adapterId" id="pf.adapterId"' -
Exporta el valor 'pf.adapterId' y muestra la respuesta:
export ADAPTER='myAdapter'
echo "$RESPONSE" | grep 'base' -
Exporta el valor de «href» (elimina la barra al final /) y muestra la respuesta:
export BASEURL='https://my-pf-baseurl'
echo "$RESPONSE" | grep 'form method="POST"' -
Exporta el valor 'action':
export SSOPING='/idp/.../resumeSAML20/idp/SSO.ping'
-
Enviar cookies junto con las credenciales:
curl -b <(echo "$RESPONSE") -X POST "$BASEURL$SSOPING" \ --data "pf.username=$SAMLUSER&pf.pass=$SAMLPASSWORD&pf.ok=clicked&pf.cancel=&pf.adapterId=$ADAPTER" --include -
Guarda el
SAMLResponsedel campo oculto:export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4=' -
Utilizando el archivo guardado
SAMLResponse, haz una solicitud StorageGRID/api/saml-responsepara generar un token de autenticación de StorageGRID.Para
RelayState, usa el ID de la cuenta de inquilino o usa 0 si quieres iniciar sesión en la API de gestión de Grid.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 respuesta incluye el token de autenticación.
{ "apiVersion": "3.0", "data": "56eb07bf-21f6-40b7-af0b-5c6cacfb25e7", "responseTime": "2018-11-07T21:32:53.486Z", "status": "success" }-
Guarda el token de autenticación de la respuesta como
MYTOKEN.export MYTOKEN="56eb07bf-21f6-40b7-af0b-5c6cacfb25e7"Ahora puedes utilizar
MYTOKENpara otras solicitudes, de forma similar a como lo harías si no se utilizara el inicio de sesión único.
-
Cierra sesión en la API si el inicio de sesión único está activado
Si se ha habilitado el inicio de sesión único (SSO), debes realizar una serie de solicitudes de API para cerrar la sesión en la API de gestión de Grid o en la API de gestión de Tenant. Estas instrucciones aplican si usas PingFederate como proveedor de identidad de SSO.
Si es necesario, puedes cerrar sesión en la API de StorageGRID desde la página de cierre de sesión único de tu organización. O puedes activar el cierre de sesión único (SLO) desde StorageGRID, lo que requiere un token de portador válido de StorageGRID.
-
Para generar una solicitud de cierre de sesión con firma, pasa `cookie "sso=true" a la API de 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.toolSe devuelve una URL de cierre de sesión:
{ "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" } -
Guarda la URL de cierre de sesión.
export LOGOUT_REQUEST='https://my-ping-url/idp/SLO.saml2?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D' -
${post_edited_translations.segment}
curl --include "$LOGOUT_REQUEST"Se devuelve la respuesta 302. La ubicación de redireccionamiento no es aplicable al cierre de sesión exclusivo de la 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
-
${post_edited_translations.segment}
Eliminar el token de portador de StorageGRID funciona igual que sin SSO. Si no se proporciona la
cookie "sso=true", el usuario se desconecta de StorageGRID sin afectar el estado de SSO.curl -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \ -H "accept: application/json" \ -H "Authorization: Bearer $MYTOKEN" \ --includeUna respuesta
204 No Contentindica que el usuario ha cerrado sesión.HTTP/1.1 204 No Content