CodeGym /Cursos Java /Módulo 5. Spring /Soporte de identificación abierta

Soporte de identificación abierta

Módulo 5. Spring
Nivel 18 , Lección 5
Disponible
Los protocolos OpenID 1.0 y 2.0 están obsoletos y se recomienda a los usuarios migrar a OpenID Connect, que es compatible con spring-security-oauth2.

El espacio de nombres admite el inicio de sesión utilizando OpenID en lugar o además del registro de formulario normal, para lo cual solo necesita haz un pequeño cambio:

<http>
<intercept-url pattern="/**" access="ROLE_USER" />
<openid-login />
</http>

Luego debe registrarse a través de un proveedor de OpenID (por ejemplo, myopenid.com) y agregar la información del usuario al <user-service> en memoria:

<user name="https://jimi.hendrix.myopenid.com/" authorities="ROLE_USER" />

Debería poder iniciar sesión utilizando myopenid.com para la autenticación. También puede seleccionar un bean UserDetailsService específico para usar OpenID configurando el atributo user-service-ref en el elemento openid-login. Tenga en cuenta que hemos omitido el atributo de contraseña de la configuración de usuario anterior porque este conjunto de datos de usuario solo se usa para cargar los permisos para el usuario. La contraseña se generará internamente de forma aleatoria, lo que evitará que los datos de este usuario se utilicen involuntariamente como fuente de autenticación en otra parte de la configuración.

Intercambio de atributos

Soporte para intercambio de atributos en OpenID. Como ejemplo, la siguiente configuración intentará obtener la dirección de correo electrónico y el nombre completo del proveedor OpenID para que los utilice la aplicación:

<openid-login>
<attribute-exchange>
    <openid-attribute name="email" type="https://axschema.org/contact/email" required="true"/>
    <openid-attribute name="name" type="https://axschema.org/namePerson"/>
</attribute-exchange>
</openid-login>

El "tipo" de cada atributo OpenID es un URI definido por un esquema particular, en este caso https://axschema.org /. Si se debe obtener el atributo para una autenticación exitosa, puede configurar el atributo required. El esquema exacto y los atributos admitidos dependen de su proveedor de OpenID. Los valores de los atributos se devuelven como parte del proceso de autenticación y luego se puede acceder a ellos mediante el siguiente código:

OpenIDAuthenticationToken token =
    (OpenIDAuthenticationToken)SecurityContextHolder.getContext().getAuthentication();
List<OpenIDAttribute> attributes = token.getAttributes();

Podemos obtener el OpenIDAuthenticationToken del SecurityContextHolder. OpenIDAttribute contiene el tipo de atributo y el valor que se recuperará (o valores en el caso de atributos multivalor). Puede pasar varios elementos attribute-exchange utilizando el atributo identifier-matcher para cada uno. Contiene una expresión regular que se comparará con el OpenID proporcionado por el usuario. Para ver una configuración de ejemplo, consulte el código base de la aplicación de muestra OpenID, que proporciona diferentes listas de atributos para los proveedores de Google, Yahoo y MyOpenID.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION