Skip to main content
Hay disponible una nueva versión de este producto.
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.

Usar la API si está activado el inicio de sesión único

Colaboradores

Si se ha habilitado el inicio de sesión único (SSO) para el sistema StorageGRID, no puede utilizar las solicitudes estándar de la API de autenticación para iniciar sesión y cerrar sesión en la API de administración de grid o en la API de gestión de inquilinos.

Iniciar 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 obtener un token de autenticación de AD FS que sea válido para la API de gestión de grid o la API de gestión de inquilinos.

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: No se ha encontrado una confirmación de suscripción válida en esta respuesta.

    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, es posible que aparezca el error: Versión de SAML no compatible.

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 nombre de usuario de SSO

    • El dominio en el que está instalado StorageGRID

    • La dirección de StorageGRID

    • Si desea acceder a la API de gestión de inquilinos, introduzca el ID de cuenta de inquilino. +Script de autenticación SSO

    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 SAMLDOMAIN='my-domain'
      export TENANTACCOUNTID=’12345’
      export STORAGEGRID_ADDRESS='storagegrid.example.com'
      export AD_FS_ADDRESS='adfs.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 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://adfs.example.com/adfs/ls/?SAMLRequest=fZHLbsIwEEV%2FJTuv7...sSl%2BfQ33cvfwA%3D&RelayState=12345",
          "responseTime": "2018-11-06T16:30:23.355Z",
          "status": "success"
      }
    3. Guarde la SAMLRequest de la respuesta para su uso en comandos posteriores.

      export SAMLREQUEST='fZHLbsIwEEV%2FJTuv7...sSl%2BfQ33cvfwA%3D'
    4. Obtenga una URL completa que incluya el ID de solicitud de cliente de AD FS.

      Una opción es solicitar el formulario de inicio de sesión mediante la URL de la respuesta anterior.

      curl "https://$AD_FS_ADDRESS/adfs/ls/?SAMLRequest=$SAMLREQUEST&RelayState=$TENANTACCOUNTID" | grep 'form method="post" id="loginForm"'

      La respuesta incluye el ID de solicitud del cliente:

      <form method="post" id="loginForm" autocomplete="off" novalidate="novalidate" onKeyPress="if (event && event.keyCode == 13) Login.submitLoginRequest();" action="/adfs/ls/?
      SAMLRequest=fZHRToMwFIZfhb...UJikvo77sXPw%3D%3D&RelayState=12345&client-request-id=00000000-0000-0000-ee02-0080000000de" >
    5. Guarde el ID de solicitud de cliente de la respuesta.

      export SAMLREQUESTID='00000000-0000-0000-ee02-0080000000de'
    6. Envíe sus credenciales a la acción de formulario de la respuesta anterior.

      curl -X POST "https://$AD_FS_ADDRESS/adfs/ls/?SAMLRequest=$SAMLREQUEST&RelayState=$TENANTACCOUNTID&client-request-id=$SAMLREQUESTID" \
        --data "UserName=$SAMLUSER@$SAMLDOMAIN&Password=$SAMLPASSWORD&AuthMethod=FormsAuthentication" --include

      AD FS devuelve un redireccionamiento 302, con información adicional en los encabezados.

      Nota Si la autenticación multifactor (MFA) está habilitada para el sistema SSO, la entrada del formulario también contendrá la segunda contraseña u otras credenciales.
      HTTP/1.1 302 Found
      Content-Length: 0
      Content-Type: text/html; charset=utf-8
      Location: https://adfs.example.com/adfs/ls/?SAMLRequest=fZHRToMwFIZfhb...UJikvo77sXPw%3D%3D&RelayState=12345&client-request-id=00000000-0000-0000-ee02-0080000000de
      Set-Cookie: MSISAuth=AAEAADAvsHpXk6ApV...pmP0aEiNtJvWY=; path=/adfs; HttpOnly; Secure
      Date: Tue, 06 Nov 2018 16:55:05 GMT
    7. Guarde la MSISAuth cookie de la respuesta.

      export MSISAuth='AAEAADAvsHpXk6ApV...pmP0aEiNtJvWY='
    8. Envíe una solicitud GET a la ubicación especificada con las cookies de LA PUBLICACIÓN de autenticación.

      curl "https://$AD_FS_ADDRESS/adfs/ls/?SAMLRequest=$SAMLREQUEST&RelayState=$TENANTACCOUNTID&client-request-id=$SAMLREQUESTID" \
        --cookie "MSISAuth=$MSISAuth" --include

      Los encabezados de respuesta contendrán información de sesión de AD FS para el uso posterior del cierre de sesión y el cuerpo de respuesta contiene el SAMLResponse en un campo de formulario oculto.

      HTTP/1.1 200 OK
      Cache-Control: no-cache,no-store
      Pragma: no-cache
      Content-Length: 5665
      Content-Type: text/html; charset=utf-8
      Expires: -1
      Server: Microsoft-HTTPAPI/2.0
      P3P: ADFS doesn't have P3P policy, please contact your site's admin for more details
      Set-Cookie: SamlSession=a3dpbnRlcnMtUHJpbWFyeS1BZG1pbi0xNzgmRmFsc2Umcng4NnJDZmFKVXFxVWx3bkl1MnFuUSUzZCUzZCYmJiYmXzE3MjAyZTA5LThmMDgtNDRkZC04Yzg5LTQ3NDUxYzA3ZjkzYw==; path=/adfs; HttpOnly; Secure
      Set-Cookie: MSISAuthenticated=MTEvNy8yMDE4IDQ6MzI6NTkgUE0=; path=/adfs; HttpOnly; Secure
      Set-Cookie: MSISLoopDetectionCookie=MjAxOC0xMS0wNzoxNjozMjo1OVpcMQ==; path=/adfs; HttpOnly; Secure
      Date: Wed, 07 Nov 2018 16:32:59 GMT
      
      <form method="POST" name="hiddenform" action="https://storagegrid.example.com:443/api/saml-response">
        <input type="hidden" name="SAMLResponse" value="PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4=" /><input type="hidden" name="RelayState" value="12345" />
    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.

Cerrar sesión en la API si se habilita el inicio de sesión único

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.

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://adfs.example.com/adfs/ls/?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D",
        "responseTime": "2018-11-20T22:20:30.839Z",
        "status": "success"
    }
  2. Guarde la URL de cierre de sesión.

    export LOGOUT_REQUEST='https://adfs.example.com/adfs/ls/?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: MSISSignoutProtocol=U2FtbA==; expires=Tue, 20 Nov 2018 22:35:03 GMT; path=/adfs; HttpOnly; Secure
  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