Springboot security oauth2 jwt implementa control de permisos e implementa microservicios para obtener información actual del usuario
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.