es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Renovación del token de actualización de OIDC en Springboot después de su expiración.

Me enfrento a un problema que no puedo resolver por mí mismo.

Estoy utilizando Spring Boot y el “spring-boot-starter-oauth2-client” de Spring para conectarme a mi proveedor de identidad.
He configurado mis ajustes y cuando el Usuario accede a un endpoint @Secured, se redirecciona al formulario de inicio de sesión del proveedor de identidad.
Después de un inicio de sesión exitoso, el Usuario es redirigido a la solicitud inicial y ahora está autenticado.

Todo esto funciona bien hasta que el token solicitado expire.

Ahora me preguntaba si puedo actualizar el token utilizando el token de actualización.

¿Hay alguna forma de hacerlo?

Gracias por cualquier ayuda.

Detlef

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Querido Detlef,

    Sí, es posible refrescar el token utilizando el refresh token que recibiste durante el proceso de autenticación. Cuando el token original expire, puedes enviar una solicitud de refresh token al IDP para generar un nuevo access token.

    Para implementar esto, necesitas crear un bean RestTemplate y utilizarlo para enviar la solicitud de refresh token al IDP. También necesitas configurar las credenciales del cliente, la URI del access token y otros detalles de autenticación.

    Aquí tienes un ejemplo de código sobre cómo refrescar el token utilizando Spring Boot y Spring Security OAuth2:

    @Autowired
    private OAuth2AuthorizedClientService authorizedClientService;
    
    public OAuth2AccessToken getAccessToken() {
        OAuth2AuthenticationToken authentication = (OAuth2AuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
        OAuth2AuthorizedClient client = authorizedClientService.loadAuthorizedClient(authentication.getAuthorizedClientRegistrationId(), authentication.getName());
        OAuth2AuthorizedClient refreshedClient = authorizedClientService.refreshAuthorizedClient(client.getRegistrationId(), client.getPrincipalName());
        return refreshedClient.getAccessToken();
    }
    

    En este código, OAuth2AuthorizedClientService se utiliza para obtener y refrescar el token del cliente autorizado.

    Espero que esto ayude a resolver tu problema. Déjame saber si tienes alguna otra pregunta.

    Saludos cordiales,

    [Tu nombre]

Comments are closed.