Skip to main content
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Utilizar la API si está activado el inicio de sesión único (PingFederate)

Colaboradores

Si lo tiene Inicio de sesión único configurado y habilitado (SSO) Además, debe utilizar PingFederate como proveedor SSO, para obtener un token de autenticación válido para la API de gestión de grid o la API de gestión de inquilinos, debe emitir una serie de solicitudes API.

Inicie sesión en la API si está habilitado el inicio de sesión único

Estas instrucciones se aplican si está utilizando PingFederate como proveedor de identidades SSO

Lo que necesitará
  • Conoce el nombre de usuario y la contraseña de SSO para un usuario federado que pertenece a un grupo de usuarios de StorageGRID.

  • Si desea acceder a la API de gestión de inquilinos, conoce el ID de cuenta de inquilino.

Acerca de esta tarea

Para obtener un token de autenticación, puede utilizar uno de los siguientes ejemplos:

  • La storagegrid-ssoauth.py Script Python, que se encuentra en el directorio de archivos de instalación de StorageGRID (./rpms Para Red Hat Enterprise Linux o CentOS, ./debs Para Ubuntu o Debian, y. ./vsphere Para VMware).

  • Ejemplo de flujo de trabajo de solicitudes curl.

    El flujo de trabajo curl podría llegar a ocurrir si lo hace demasiado lentamente. Es posible que aparezca el error: A valid SubjectConfirmation was not found on this Response.

    Nota El flujo de trabajo curl de ejemplo no protege la contraseña de ser vista por otros usuarios.

    Si tiene un problema de codificación URL, puede que aparezca el error: Unsupported SAML version.

Pasos
  1. Seleccione uno de los siguientes métodos para obtener un token de autenticación:

    • Utilice la storagegrid-ssoauth.py Guión Python. Vaya al paso 2.

    • Usar solicitudes curl. Vaya al paso 3.

  2. Si desea utilizar el storagegrid-ssoauth.py Guión, pase el script al intérprete Python y ejecute el script.

    Cuando se le solicite, escriba valores para los siguientes argumentos:

    • El método SSO. Puede introducir cualquier variación de "'pingfederate'" (PINGFEDERATE, pingfederate, etc.).

    • El nombre de usuario de SSO

    • El dominio en el que está instalado StorageGRID. Este campo no se utiliza para PingFederate. Puede dejarlo en blanco o introducir cualquier valor.

    • La dirección de StorageGRID

    • El ID de cuenta de inquilino, si desea acceder a la API de gestión de inquilinos.

      Script de autenticación SSO para el federado de ping

    El token de autorización de StorageGRID se proporciona en la salida. Ahora puede utilizar el token para otras solicitudes, de forma similar a cómo utilizaría la API si no se estuviera utilizando SSO.

  3. Si desea usar solicitudes curl, use el siguiente procedimiento.

    1. Declare 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'
      Nota Para acceder a la API de gestión de grid, utilice 0 AS TENANTACCOUNTID.
    2. Para recibir una URL de autenticación firmada, emita una solicitud DE ENVÍO /api/v3/authorize-saml, Y quite la codificación JSON adicional de la respuesta.

      En este ejemplo se muestra una solicitud POST para una dirección URL de autenticación firmada para TENANTACCOUNTID. Los resultados se pasan a python -m json.tool para quitar 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.tool

      La respuesta de este ejemplo incluye una dirección URL firmada codificada por URL, pero no incluye la capa de codificación JSON adicional.

      {
          "apiVersion": "3.0",
          "data": "https://my-pf-baseurl/idp/SSO.saml2?...",
          "responseTime": "2018-11-06T16:30:23.355Z",
          "status": "success"
      }
    3. Guarde la SAMLRequest de la respuesta para su uso en comandos posteriores.

      export SAMLREQUEST="https://my-pf-baseurl/idp/SSO.saml2?..."
    4. Exporte la respuesta y el cookie y añada la respuesta:

      RESPONSE=$(curl -c - "$SAMLREQUEST")
      echo "$RESPONSE" | grep 'input type="hidden" name="pf.adapterId" id="pf.adapterId"'
    5. Exporte el valor 'pf.adapterId' y añada la respuesta:

      export ADAPTER='myAdapter'
      echo "$RESPONSE" | grep 'base'
    6. Exporte el valor 'href' (retire la barra diagonal inversa /) y añada la respuesta:

      export BASEURL='https://my-pf-baseurl'
      echo "$RESPONSE" | grep 'form method="POST"'
    7. Exporte el valor de 'acción':

      export SSOPING='/idp/.../resumeSAML20/idp/SSO.ping'
    8. Enviar cookies junto con 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
    9. Guarde la SAMLResponse en el campo oculto:

      export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4='
    10. Utilizando el guardado SAMLResponse, Haga un StorageGRID/api/saml-response Solicitud para generar un token de autenticación de StorageGRID.

      Para RelayState, Utilice el ID de cuenta de arrendatario o utilice 0 si desea iniciar sesión en la API de administració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.tool

      La 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"
    }
    1. Guarde el token de autenticación en la respuesta como MYTOKEN.

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

      Ahora puede utilizar MYTOKEN Para otras solicitudes, del mismo modo que utilizaría la API si no se utiliza SSO.

Cierre sesión en la API si el inicio de sesión único está habilitado

Si se ha activado el inicio de sesión único (SSO), debe emitir una serie de solicitudes API para cerrar sesión en la API de gestión de grid o en la API de gestión de inquilinos. Estas instrucciones se aplican si está utilizando PingFederate como proveedor de identidades SSO

Acerca de esta tarea

Si es necesario, puede cerrar la sesión de la API de StorageGRID simplemente cerrando la sesión en la página única de cierre de sesión de su empresa. O bien, puede activar el cierre de sesión único (SLO) desde StorageGRID, que requiere un token de portador de StorageGRID válido.

Pasos
  1. Para generar una solicitud de cierre de sesión firmada, pase cookie "sso=true" En 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.tool

    Se 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"
    }
  2. Guarde la URL de cierre de sesión.

    export LOGOUT_REQUEST='https://my-ping-url/idp/SLO.saml2?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D'
  3. Envíe una solicitud a la URL de cierre de sesión para activar SLO y redirigir de nuevo a StorageGRID.

    curl --include "$LOGOUT_REQUEST"

    Se devuelve la respuesta de 302. La ubicación de redirección no se aplica a la salida de sólo 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. Elimine el token del portador de StorageGRID.

    La eliminación del token del portador de StorageGRID funciona de la misma forma que sin SSO. Si cookie "sso=true" No proporciona, el usuario cierra la sesión de StorageGRID sin afectar al estado de SSO.

    curl -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \
    -H "accept: application/json" \
    -H "Authorization: Bearer $MYTOKEN" \
    --include
    1. 204 No Content la respuesta indica que el usuario ha cerrado la sesión.

    HTTP/1.1 204 No Content