IBM Cloud Docs
Inicio de sesión único (SSO)

Inicio de sesión único (SSO)

Con el inicio de sesión único (SSO) para el directorio en la nube puede proporcionar una experiencia de autenticación fluida entre varias apps web. Si el inicio de sesión único está activado cuando un usuario inicia la sesión, no es necesario que vuelva a especificar sus credenciales la próxima vez que inicie sesión. En vez de eso, iniciará sesión automáticamente en cualquiera de las apps que estén protegidas por la misma instancia de App ID.

App ID ofrece inicio de sesión único (SSO) para los usuarios de Directorio en la nube. Si utiliza un proveedor de identidad SAML social o federado, el SSO es gestionado por dicho proveedor y App ID lo respeta.

Cómo funciona

Consulte el diagrama siguiente para ver el inicio de sesión único en acción.

caption-side=bottom"
SSO de Cloud Directory*

  1. Un usuario del directorio en la nube inicia sesión en la app por primera vez.
  2. Se le solicita que se autentique proporcionando un nombre de usuario o un correo electrónico y una contraseña.
  3. Si las credenciales son válidas, el usuario inicia sesión en la app. Al mismo tiempo, App ID crea una sesión y establece una cookie en el navegador del usuario.
  4. Si un usuario intenta iniciar sesión en una de las otras aplicaciones, App ID detecta la cookie de la sesión y el usuario inicia sesión en la aplicación automáticamente. Las cookies de sesión de App ID son específicas de la instancia y están firmadas por la clave privada exclusiva de la instancia.

Actualmente, Cloud Directory SSO está configurado para funcionar cuando Cloud Directory es el único proveedor de identidad habilitado. Si la instancia de App ID se ha configurado para utilizar varios proveedores de identidad, la habilitación del SSO no afecta al flujo de inicio de sesión. Se solicita a los usuarios que entren sus credenciales del directorio en la nube o que elijan uno de los demás proveedores en cada inicio de sesión.

Configuración del SSO

Puede configurar el inicio de sesión único utilizando el panel de control de App ID o las API.

Con la GUI

Puede configurar el SSO a través de la GUI.

  1. Vaya al separador Directorio en la nube > Inicio de sesión único del panel de control de App ID.

  2. Cambie Habilitar inicio de sesión único a Habilitado.

  3. Establezca la cantidad de tiempo que un usuario puede estar inactivo antes de que caduque la sesión de SSO. Cuando caduque, deben volver a iniciar sesión. El tiempo se especifica en minutos y el tiempo máximo permitido de inactividad es de 10.080 minutos (7 días). El tiempo predeterminado es de 1440 minutos, lo que equivale a 1 día.

  4. Añada los URI de redirección al recuadro URI de redirección de cierre de sesión y pulse el signo +. Asegúrese de registrar únicamente aplicaciones en las que confía. Al registrar el URI, está autorizando que App ID lo incluya en el flujo de trabajo de autorización.

  5. Pulse Guardar.

Con la API

Al utilizar la API de administración de configuración de SSO para definir tres valores, puede activar la característica.

Una llamada de ejemplo:

{
  "isActive": true,
  "inactivityTimeoutSeconds": 86400,
  "logoutRedirectUris": [
    "http://my-first-app.com/after_logout",
    "http://my-second-app.com/after_logout"
  ]
}
Ajustes de configuración de SSO
Valor Definición
isActive Para habilitar SSO, establezca este valor en true. El valor predeterminado es false.
inactivityTimeoutSeconds El periodo de tiempo más largo que puede pasar sin ninguna actividad de usuario antes de que el usuario esté obligado a volver a especificar sus credenciales. Este valor se especifica en segundos y puede ser un máximo de 604800 seconds (7 días). El valor predeterminado es 86400 seconds (1 día).
logoutRedirectUris Una lista separada por comas de los URI permitidos a los que App ID puede redirigir a los usuarios después de que hayan finalizado la sesión.

Configuración del cierre de sesión

Con App ID, puede cerrar la sesión de SSO de un usuario para su navegador actual. Si el navegador del usuario accede al punto final de la API, se termina la sesión y se solicita al usuario que especifique sus credenciales en el siguiente inicio de sesión en ese navegador, para cualquiera de sus apps.

Cuando se inicia uno de los flujos relacionados con el cambio, el restablecimiento o la renovación de una contraseña, las sesiones en todos los clientes se terminan automáticamente para el usuario.

Utilizando la API

Para cerrar la sesión de un usuario, redirija su navegador utilizando su información para completar la siguiente llamada de API.

https://<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>/cloud_directory/sso/logout?redirect_uri=<redirectURI>&client_id=<clientID>
Variables de llamada a la API de cierre de sesión SSO
Variable Valor
region La región en la que se ha suministrado la instancia de App ID. Obtenga más información sobre las regiones disponibles.
tenantID El identificador exclusivo de la instancia de App ID. Puede encontrar este valor en la pestaña Credenciales de servicio del panel App ID. Si no dispone de un conjunto de credenciales de servicio, puede crear uno y tomar el valor de ahí.
redirectURI Un URI que ha especificado en la configuración de SSO a través del panel de control de App ID. Por razones de seguridad, si no especifica un valor, no se puede realizar la redirección y se muestra un error.
clientID El ID de cliente de la aplicación.

Incluso si finaliza la sesión de SSO, es posible que no sea necesario que un usuario con una señal de acceso válida almacenada en su sesión tenga que volver a entrar sus credenciales de nuevo hasta que caduque la señal. De forma predeterminada, la señal caduca transcurrida 1 hora.

Utilizando el SDK del servidor de Node.JS

También puede utilizar el SDK del servidor de Node.js de App ID para que se encargue de la redirección automáticamente.

  1. Establezca logoutSSO como método. Por ejemplo:

    let webAppStrategy = new WebAppStrategy(.....);
    ....
    webAppStrategy.logoutSSO();
    
  2. Configure el cierre de sesión.

    app.get('/logoutSSO', (req, res) => {
       res.clearCookie("refreshToken");
       webAppStrategy.logoutSSO(req,res, { "redirect_uri": "https://my-app.com/after_logout" });
       });
    

Finalización de todas las sesiones de un usuario

Como administrador, puede finalizar todas las sesiones de SSO de cualquier usuario mediante las API de administrador de App ID. Las API están protegidas por una señal de Cloud IAM.

Solicitud de API de ejemplo:

POST https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/Users/<userID>/sso/logout
Headers:
Authorization: Bearer <IAMToken>
Content-Type: application/json
Variables necesarias para finalizar todas las sesiones SSO de un usuario
Variable Valor
Content-Type El tipo de contenido de su solicitud. El valor aceptado es application/json.
region La región en la que se ha suministrado la instancia de App ID. Obtenga más información sobre las regiones disponibles.
tenantID El identificador exclusivo de la instancia de App ID. Puede encontrar este valor en la pestaña Credenciales de servicio del panel App ID. Si no dispone de un conjunto de credenciales de servicio, puede crear uno y tomar el valor de ahí.
userID El identificador exclusivo de un usuario del directorio en la nube. Puede obtener el ID utilizando las API de usuarios del directorio en la nube, o bien visualizando la señal de identidad del usuario.

Cuando se invoca esta API, se invalidan todas las sesiones de SSO del usuario especificado. Esto significa que la próxima vez que el usuario intente iniciar sesión en cualquiera de sus apps, desde cualquier dispositivo o navegador, deberá volver a especificar sus credenciales.