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.