En spring-security-oauth2:2.4.0.RELEASE
clases como OAuth2RestTemplate
, OAuth2ProtectedResourceDetails
y ClientCredentialsAccessTokenProvider
todas han sido marcadas como obsoletas.
Desde el javadoc en estas clases, apunta a una guía de migración de seguridad de primavera que insinúa que las personas deben migrar al proyecto central de spring-security 5. Sin embargo, tengo problemas para encontrar cómo implementaría mi caso de uso en este proyecto.
Toda la documentación y ejemplos hablan sobre la integración con un proveedor de OAuth de tercera parte si desea que las solicitudes entrantes a su aplicación se autentiquen y desea usar el proveedor de OAuth de terceros para verificar la identidad.
En mi caso de uso, todo lo que quiero hacer es hacer una solicitud con un RestTemplate
servicio externo protegido por OAuth. Actualmente creo un OAuth2ProtectedResourceDetails
con mi ID de cliente y secreto que paso a un OAuth2RestTemplate
. También tengo una costumbre ClientCredentialsAccessTokenProvider
agregada a la OAuth2ResTemplate
que solo agrega algunos encabezados adicionales a la solicitud de token que requiere el proveedor de OAuth que estoy usando.
En la documentación de spring-security 5, encontré una sección que menciona la personalización de la solicitud de token , pero nuevamente parece estar en el contexto de autenticar una solicitud entrante con un proveedor de OAuth de terceros. No está claro cómo usaría esto en combinación con algo como a ClientHttpRequestInterceptor
para garantizar que cada solicitud saliente a un servicio externo primero obtenga un token y luego se agregue a la solicitud.
También en la guía de migración vinculada anteriormente hay una referencia a una OAuth2AuthorizedClientService
que dice que es útil para usar en interceptores, pero nuevamente parece que depende de cosas como la ClientRegistrationRepository
que parece ser donde mantiene registros para proveedores de terceros si desea usar que proporcionan para garantizar que se autentique una solicitud entrante.
¿Hay alguna forma de utilizar la nueva funcionalidad en spring-security 5 para registrar proveedores de OAuth y obtener un token para agregar a las solicitudes salientes de mi aplicación?
WebClient
se use un interceptor (o para lo que sea la nueva terminología ) o algo similar para obtener un token OAuth de un proveedor de OAuth personalizado (ninguno de los que admite OoTB como Facebook / Google) para agregarlo a una solicitud saliente. Todos los ejemplos parecen centrarse en autenticar las solicitudes entrantes con otros proveedores. ¿Tienes alguna sugerencia para algún buen ejemplo?