Mejores prácticas y tutoriales

Cómo crear un almacenamiento de tokens personalizado para Spring-Security-Oauth2 | OAuth Parte 2

Lectura de 10 minutos

En la publicación de blog anterior, discutimos cómo configurar una autenticación OAuth2 sencilla. Sin embargo, nuestra implementación tiene un defecto importante: estamos usando un almacén de tokens en memoria.

Los almacenamientos de tokens en memoria deben usarse únicamente durante el desarrollo o si su aplicación tiene un solo servidor, ya que no se pueden compartir fácilmente entre nodos y, en caso de un reinicio del servidor, perderá todos los tokens de acceso que contengan.

Spring-security-oauth2 ya cuenta con compatibilidad integrada para JDBC y JWT. Sin embargo, si necesita guardar sus tokens en otro lugar, tiene que crear su propio almacén de tokens de Spring Security. Desafortunadamente, implementar algo así no es una tarea trivial, y espero que la siguiente receta le ahorre un par de horas de trabajo.

Comencemos creando las dos entidades responsables de almacenar tu token de acceso y tu token de actualización, y sus respectivos repositorios:

 

 

 

 

Tenga en cuenta que OAuth2Authentication es una interfaz, así que no tengo otra opción que serializar el objeto para almacenarlo en la base de datos. Aquí está la clase encargada de serializarlo y deserializarlo:

 

Ahora, por fin podemos crear nuestro spring oauth2 tienda de tokens. Para hacer eso, todo lo que necesitamos es implementar la larga lista de métodos de org.springframework.security.oauth2.provider.token.TokenStore:

 

Finally, we can slightly change our SecurityConfig class, which we have created in the previous article. It will return now an instance of CouchbaseTokenStore instead of InMemoryTokenStore:

 

Here is the complete version of the SecurityConfig class:

 

Well Done! That is all we had to do.

Your access token will look like the following in your database:

 

I have used caelwinner’s project as a reference, here is my special thanks to him.

If you have any questions, feel free to tweet me at @deniswsrosa

 

 

Compartir este artículo

Autor

Denis Rosa is a Developer Advocate for Couchbase and lives in Munich – Germany. He has a solid experience as a software engineer and speaks fluently Java, Python, Scala and Javascript. Denis likes to write about search, Big Data, AI, Microservices and everything else that would help developers to make a beautiful, faster, stable and scalable app.

Una respuesta

  1. Avatar de Agombia
    Agombia

    Hi Denis,
    First of all, thank you for the very brief but concise tutorial. Although it is over a year, it is well explained, and I must acknowledge that you are an excellent teacher.
    Please, I have one question and a request to make. Is it possible to add JWT to this implementation OAuth2, and if yes,can you please provide a guide?
    Waiting for a reply.
    Thank you so much.

Deja un comentario

¿Listo para comenzar con Couchbase Capella?

Comenzar a construir

Visita nuestro portal para desarrolladores para explorar NoSQL, consultar recursos y comenzar con los tutoriales.

Usa Capella gratis

Empieza a usar Couchbase en tan solo unos clics. Capella DBaaS es la forma más fácil y rápida de comenzar.

Ponte en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítenos ayudarte.