Usando o Client Credentials
Usando o Client Credentials
Usando o Client Credentials
Neste tutorial vamos aprender o seguinte:
- Configuração no Cerberus (Authorization Server);
- Obtendo um token para acessar a API protegida (Client);
- Criando uma API protegida (Resource Server);
Configuração no Cerberus (Authorization Server)
- No Cerberus, logado como Admin, vá em Aplicações;
- Cadastre uma nova aplicação, por exemplo, nome "NovaApp001", descrição "Aplicação para testar o Client Credentials Grant Type";
- Ainda no cadastro da nova aplicação, clique no botão Editar, em seguida vá na aba Clientes OAuth, e clique no botão azul com o símbolo de soma;
- Preencha o dialog Adicionar Cliente OAuth da maneira abaixo. Perceba que em Tipos de garantia de autorização Client Credentias foi selecionado, e que em Autoridades definimos duas: NovaApp003:acessoA e NovaApp003:acessoB
Atenção: utilizamos as Autoridades para gerenciar o acesso aos recursos do Resource Sever (API protegida). - Ao clicar no botão Salvar, anote o Secret pura. O ID do Cliente e a Secret pura são o user e o password que usaremos para obter um token.
ATENÇÃO: caso um Cliente OAuth seja editado, lembre-se de apertar no botão Revogar Tokens da Aplicação (botão laranja na listagem de Clientes OAuth no detalhamento de uma Aplicação), isso irá remover o respectivo token da tabela oauth_access_token do banco cerberus, para um novo ser gerado no próximo request de token do cliente
Obtendo um token para acessar a API protegida (Client).
Obtemos um token fazendo um request ao Cerberus, para isso usaremos os seguintes dados: será um POST utilizando o Authorization do tipo Basic Auth usando como Username e Password o ID do Cliente(por exemplo: diligencia) e a Secret pura (é a secret gerada na hora que foi criada ao cadastrar no Cerberus o Client Oauth). Definimos um header Content-Type=application/x-www-form-urlencoded e como Body definimos grant_type=client_credentials. O retorno dessa request conterá o access token.
Usando o site JWT para decodificar o token obtido, temos o seguinte:
Criando uma API protegida (Resource Server)
O resource server normalmente é uma API, em anexo temos o boilerplate de uma que pode ser reutilizada como base. Ela basicamente é uma adaptação do sisrh-api, onde a classe de configuração principal é a tcepb.newapi.config.ResourceSecurityConfiguration que basicamente é uma adaptação da classe do sisrh-api tcepb.rh.config.ResourceConfig. Copiamos também a chave publica utilizada sisrh-api, ela esta localizada em src/main/resources/certs/public.txt
Referências:
- Spring Boot + OAuth 2 Client Credentials Grant - Hello World Example. URL: https://www.javainuse.com/spring/springboot-oauth2-client-grant >. Acessado em: 12/09/2019;