Práticas recomendadas e tutoriais

Como criar um armazenamento de token personalizado para Spring-Security-Oauth2 | OAuth Parte 2

Na postagem anterior do blog, discutimos Como configurar uma autenticação OAuth2 simples. No entanto, nossa implementação tem uma falha importante: estamos usando um armazenamento de tokens na memória.

Os armazenamentos de tokens na memória devem ser usados somente durante o desenvolvimento ou se o seu aplicativo tiver um único servidor, pois não é possível compartilhá-los facilmente entre os nós e, no caso de reinicialização do servidor, você perderá todos os tokens de acesso nele contidos.

Spring-security-oauth2 já tem suporte integrado para JDBC e JWT. No entanto, se você precisar salvar seus tokens em outro lugar, terá de criar seu próprio armazenamento de tokens de segurança do Spring. Infelizmente, implementar tal coisa não é uma tarefa trivial, e espero que a receita a seguir lhe poupe algumas horas de trabalho.

Vamos começar criando as duas entidades responsáveis por armazenar seu token de acesso e de atualização e seus respectivos repositórios:

 

 

 

 

Observe que Autenticação OAuth2 é uma interface, portanto, não tenho outra opção a não ser serializar o objeto para armazená-lo no banco de dados. Aqui está a classe responsável por serializar/desserializar o objeto:

 

Agora, podemos finalmente criar nosso spring oauth2 armazenamento de tokens. Para fazer isso, tudo o que precisamos é implementar a longa lista de métodos da classe org.springframework.security.oauth2.provider.token.TokenStore:

 

Por fim, podemos alterar ligeiramente nosso SecurityConfig que criamos no artigo anterior. Ele retornará agora uma instância de CouchbaseTokenStore em vez de Armazenamento de token na memória:

 

Aqui está a versão completa do SecurityConfig classe:

 

Muito bem! Isso é tudo o que tínhamos que fazer.

Seu token de acesso será parecido com o seguinte em seu banco de dados:

 

Eu usei caelwinner's como referência, aqui está meu agradecimento especial a ele.

Se você tiver alguma dúvida, sinta-se à vontade para me enviar um tweet para @deniswsrosa

 

 

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Denis Rosa, defensor dos desenvolvedores, Couchbase

Denis Rosa é um Developer Advocate do Couchbase e mora em Munique, na Alemanha. Ele tem uma sólida experiência como engenheiro de software e fala fluentemente Java, Python, Scala e Javascript. Denis gosta de escrever sobre pesquisa, Big Data, IA, microsserviços e tudo o mais que possa ajudar os desenvolvedores a criar um aplicativo bonito, mais rápido, estável e escalável.

Um comentário

  1. Oi Denis,
    Antes de mais nada, obrigado pelo tutorial muito breve, mas conciso. Embora tenha mais de um ano, ele está bem explicado, e devo reconhecer que você é um excelente professor.
    Por favor, tenho uma pergunta e uma solicitação a fazer. É possível adicionar o JWT a essa implementação OAuth2 e, em caso afirmativo, você pode fornecer um guia?
    Aguardando uma resposta.
    Muito obrigado.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.