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.
GO TO FULL VERSION