Cómo forzar la autenticación del usuario siempre con aplicaciones SAML y OIDC

A veces, es necesario asegurarse de que los usuarios se autentiquen cada vez que acceden a una aplicación, aunque tengan una sesión activa. Esto puede ser útil para mejorar la seguridad o cumplir requisitos normativos. Así se configura este comportamiento tanto para aplicaciones OpenID Connect (OIDC) como SAML.


Para aplicaciones OIDC: usa el prompt=login parámetro

OpenID Connect (OIDC) permite forzar la autenticación del usuario incluyendo el parámetro prompt=login en la solicitud de autorización. Esto garantiza que se pida al usuario que inicie sesión cada vez que accede a la aplicación, independientemente de su sesión existente.

Ejemplo: solicitud de autorización OIDC

https://login.microsoftonline.com/common/oauth2/v2.0/authorize
?response_type=code
&client_id=blf6xxxx-xxxx-xxxx-21cd2263xxxx
&redirect_uri=https://jwt.ms
&scope=openid profile User.Read
&prompt=login

Parámetros clave explicados

  • response_type=code: especifica el flujo de código de autorización.
  • client_id: el identificador único de la aplicación.
  • redirect_uri: la URI a la que se redirige al usuario tras la autenticación.
  • scope: define los permisos que solicita la aplicación.
  • prompt=login: fuerza al usuario a autenticarse cada vez.

Para aplicaciones SAML: usa el ForceAuthn atributo

En SAML, puedes lograr el mismo efecto estableciendo el atributo ForceAuthn en true en la solicitud de autenticación. Esto indica al proveedor de identidad (IdP) que exija al usuario autenticarse, aunque tenga una sesión activa.

Ejemplo: solicitud de autenticación SAML

<samlp:AuthnRequest 
    xmlns="urn:oasis:names:tc:SAML:2.0:metadata" 
    ID="C2d2FH4oiJ5kL6mN7oPQgR9tOUvIw" 
    Version="2.0" 
    IssueInstant="2013-03-18T03:28:54.1839884Z" 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <ForceAuthn>true</ForceAuthn>
    <Issuer 
        xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
        https://www.contoso.com
    </Issuer>
</samlp:AuthnRequest>

Atributos clave explicados

  • ForceAuthn=true: garantiza que el IdP exija al usuario autenticarse.
  • Issuer: identifica a la entidad que realiza la solicitud de autenticación.

¿Por qué forzar la autenticación?

Forzar la autenticación del usuario cada vez que accede a una aplicación puede ser beneficioso en casos como:

  • Seguridad mejorada: evita el acceso no autorizado debido a sesiones obsoletas.
  • Cumplimiento normativo: cumple los requisitos regulatorios de autenticación frecuente.
  • Aplicaciones sensibles: protege las aplicaciones que manejan datos críticos o confidenciales.

Conclusión

Ya uses OIDC o SAML, forzar la autenticación del usuario garantiza un mayor nivel de seguridad y control sobre el acceso a tus aplicaciones. Usa prompt=login para aplicaciones OIDC y ForceAuthn=true para aplicaciones SAML para implementar esta función de forma eficaz.

Deja un comentario