Red de conocimiento informático - Problemas con los teléfonos móviles - Springboot security oauth2 jwt implementa control de permisos e implementa microservicios para obtener información actual del usuario

Springboot security oauth2 jwt implementa control de permisos e implementa microservicios para obtener información actual del usuario

En el proyecto dubbo zookeeper original, el módulo web solo exponía la interfaz Restful y cada módulo de servicio solo exponía la interfaz duboo. En este momento, después de que el usuario inicia sesión, el proyecto web realiza la autenticación y verificación del token y pasa el ID de sesión al módulo de servicio dubbo a través del paso de parámetros implícitos de dubbo, y luego el interceptor obtiene la información del usuario de Redis según el ID de sesión y establece al hilo actual. La mejor manera es usar un token, que se puede usar como identificador de sesión entre BS (generalmente un token aleatorio local) o como un portador de información para pasar información personalizada (jwt, es decir, Json Web Token).

Para comprender este artículo con mayor claridad, debe tener ciertos conocimientos sobre spring-security-oauth y jwt. Este artículo solo se centra en la mensajería de usuario.

Configuración del servidor de autenticación AuthorizationServerConfigurerAdapter.

p>

TokenConverter personalizado

JwtAccessTokenConverter personalizado

En este punto, acceda a la interfaz del token del servidor de autorización de acuerdo con el formato fijo para obtener el token. como se muestra en la figura, puede obtener el token con formato jwt y también se agrega información adicional sobre el apodo.

Al analizar directamente la cadena jwt se puede obtener la siguiente información, a saber...,...,... .. e., nombre de usuario e información de autorización

Solo necesita especificar exactamente el mismo almacenamiento de token y convertidor de token que el servidor de autorización

En el filtro de seguridad, OAuth2AuthenticationProcessingFilter obtendrá información relevante de la tarjeta para autenticación

Fuente:

Tenga en cuenta que el servidor de recursos está configurado principalmente en

ResourceServerConfigurerAdapter

El microservicio obtiene información del usuario en jwttoken de dos maneras: usando el contexto de seguridad para obtener directamente el nombre de usuario actual y los permisos, y obteniendo otra información a través de otro interceptor personalizado.

Es simple: obtenga la información del encabezado para analizar el token de autenticación

Luego obtenga la información adicional del servidor de autorización nick_name agregada a la variable del hilo

donde Usuario clase de contexto

Inicie el interceptor para registrar la clase de configuración webmvc

Obtenga información del usuario en el controlador como se muestra

Excepción en la autenticación predeterminada, como se muestra en la figura

Supongamos que realizamos un manejo de excepciones global y el front-end quiere realizar un salto de inicio de sesión unificado cuando el token caduca. ¿Cómo debemos hacer esto?

Implemente la interfaz AuthenticationEntryPoint y sobrecargue el método de inicio

Tenga en cuenta que lanzar excepciones directamente no cumple con las regulaciones de @RestControllerAdvice, porque la respuesta aquí se devuelve directamente y no se realiza ningún control. controlador usado

En este punto, la excepción que se me devolvió es la misma que la excepción predeterminada.