Red de conocimiento informático - Problemas con los teléfonos móviles - Uso del objeto SpringSecurity Oauth2Authentication

Uso del objeto SpringSecurity Oauth2Authentication

Al llamar al servidor de recursos, pasamos el token de solicitud como valor de encabezado, que contiene la identidad de la persona que llama. Pero, ¿cómo determina el servidor de recursos la identidad de la persona que llama a partir del token?

La seguridad tiene un filtro que convierte la información de la etiqueta en información del usuario de la persona que llama. Este filtro es Oauth2AuthenticationProcessingFilter

I. Ver el código fuente

Ver el código fuente del método doFilter de Oauth2AuthenticationProcessingFilter

Al ver el método dofilter de Oauth2AuthenticationProcessingFilter, el la atención se centra en dos puntos

(1) Extraiga el token de la solicitud y encapsúlelo en un archivo ASCII. (1) Extraiga el token de la solicitud y encapsúlelo en un objeto de autenticación

(2) Entregue la autenticación al AuthenticationManager para el procesamiento de autenticación

Centrémonos en la discusión a continuación procesamiento de estos dos aspectos.

En segundo lugar, la implementación de conversión de token a objeto de autenticación

Autenticación autenticación = tokenExtractor .extract(request);

La implementación predeterminada de tokenExtractor en Oauth2AuthencationProcessingFilter es BearerTokenExtractor. , echemos un vistazo al método extract() de BearerTokenExtractor.

III. Autenticación del objeto de autenticación

Autenticación authResult = authenticateManager .authenticate(authentication);

La clase de implementación de authenticManager aquí es Oauth2AuthenticationManager, no Nosotros. Refiriéndose a ProviderManager, echemos un vistazo al método authenticate() en Oauth2AuthenticationManager.

Método LoadAuthentication() de RemoteTokenService

Clase de conversión de autenticación de usuario

* El atributo principal del objeto OAuth2Authentication inyectado por la capa de interfaz es el atributo principal en el objeto. Este objeto se implementa en el método extractAuthentication() de esta clase.

* De forma predeterminada, la seguridad se utiliza en el método extractAuthentication() de la clase DefaultAccessTokenConverter.

* Heredar de la clase UserAuthenticationConverter e implementar el método extractAuthentication() satisfará la necesidad de construir nuestro propio atributo principal.

* En la clase ResourceConfig, continuamos usando DefaultAccessTokenConverter, pero reemplazamos la clase UserAuthenticationConverter con nuestra propia clase de implementación CustomUserAuthenticationConverter.

*

* La propiedad principal que construimos es una clase de mapa que contiene los campos de teléfono y de usuario. * La propiedad principal que construimos es una clase de mapa que contiene los campos de teléfono y de ID de usuario.