As três linhas de código aqui não significam que você realmente só precisa escrever 3 linhas de código, mas com base em um serviço de inicialização do Spring OAuth2 que escrevi. Você só precisa modificar 3 linhas de informações de configuração do banco de dados para obter um serviço de inicialização do Spring OAuth2.
Endereço do projeto https://github.com/jeesun/oauthserver
Oauthserver
Introdução
Oauthserver é um servidor OAuth independente completo com base no Spring Boot OAuth2. Basta criar tabelas de dados relevantes e modificar as informações de conexão do banco de dados, e você pode obter um servidor OAuth.
Bancos de dados relacionais suportados:
Funções implementadas:
Processo de uso
1. Crie a tabela
PostGresql
Execute SRC/Main/Resources/Schema-PG.SQL para concluir a criação da tabela de dados e importar os dados de teste.
Mysql
Execute SRC/Main/Resources/Schema-Mysql.sql para concluir a criação da tabela de dados e a importação de dados de teste.
2. Modificar informações de conexão do banco de dados
No Application.yml, as informações de conexão do banco de dados estão configuradas. Entre eles, o nome de usuário e a senha dos itens de configuração devem ser criptografados pelo Jasypt e não podem ser preenchidos diretamente. A chave de criptografia é configurada por jasypt.encryptor.password. Você precisa usar a ferramenta UTILTESTS no diretório de teste para obter a string criptografada.
Postgresql# postgresql informações de conexão Driver-class-name: org.postgresql.driver URL: jdbc: pósgresql: //127.0.0.1: 5432/tymelte? Useunicode = true & caracteres = utf-8 username: c (htpbg9fq+true & caractere = utf-8 Enc (abdq6lyospryfqhcqzemtxrozyjvjia4) mysql# mysql conexão Informações sobre driver-class-name: com.mysql.jdbc.driver url: jdbc: mysql: //127.0.0.1: 3306/test? Usenicode = TrueUnicode = TrueUnicode = TrueNicode = TrueNicode = TrueUnicode = Trueunicode = TrueUnicDode = TrueUnicDode = TrueUnicDODE =/127.0.0.1: 3306/Test? ENC (yiyjvwtuldgn // yab3kbua ==) Senha: ENC (9OAIJKFGGSDFAHH3OXY63RHWQ+AMDMIJ)
3. Corra
Agora, tudo está pronto. Execute o projeto. Quando o programa começa com sucesso, significa que você o configurou com sucesso.
4. Teste
Adicionei dados de teste à tabela ao criar a tabela. Os valores dos seguintes parâmetros de solicitação são todos dados de teste e podem ser encontrados na tabela de dados. Vá para a tabela de dados para modificar o valor correspondente de acordo com seus requisitos.
Na tabela OAuth_client_details, já existem dados de teste. Os valores das colunas client_id e client_secret correspondem aos valores dos parâmetros básicos de solicitação de OAuth, nome de usuário e senha, respectivamente. As colunas access_token_valididade e coluna refresh_token_valididade representam o período de validade de access_token e refresh_token, respectivamente, em segundos. Os dados de teste 7200 e 5184000 representam 2 horas e 2 meses (60 dias), respectivamente. Esta é uma configuração relativamente razoável de tempo de validade, que pode ser usada como referência.
Todas as interfaces relacionadas aos tokens requerem autenticação básica do OAuth.
1. Obtenha Access_token de acordo com o nome de usuário e a senha
Post http: // localhost: 8182/oauth/token? Grant_type = senha e nome de usuário = jeesun & senha = 1234567890c
Exemplo de sucesso:
{"Access_token": "CA582CD1-BE6C-4A5A-82EC-10AF7A8E06EB", "TOKEN_TYPE": "BARRER", "Refresh_Token": "C24A6143-97C8-4642-888boken": " "Scope": "Leia Write Trust"}Exemplo de falha (nome de usuário ou senha incorreto)
{"Error": "Invalid_grant", "Error_Description": "Bad Credenciais"}2. Verifique Access_Token
Obtenha http: // localhost: 8182/oauth/check_token? Token = CA582CD1-BE6C-4A5A-82EC-10AF7A8E06EB
Exemplo bem -sucedido
{"aud": ["oauth2-resource"], "exp": 1524507296, "user_name": "jeesun", "autoridades": ["role_admin", "role_user"].Exemplo de falha (Access_Token expirou)
{"Error": "Invalid_token", "Error_Description": "Token não foi reconhecido"}3. Obtenha new access_token de acordo com o refresh_token
Post http: // localhost: 8182/oauth/token? Grant_type = refresh_token & refresh_token = C24A6143-97C8-4642-88B9-D5C5B902B487
Exemplo bem -sucedido
{"Access_token": "690ECD7D-F2B7-4FAA-AC45-5B7A319478E8", "TOKEN_TYPE": "BARRER", "Refresh_TOKen": "C24A614-97C8-4642-88BKY": 7199, "SCOPE": "Leia Write Trust"}Guia de prática de aplicativos
Depois que o aplicativo obtém as informações do token, ele precisa salvar as informações do token e o tempo de solicitação. Antes de passar no Access_token, você precisa verificar se o Access_Token expira. Para reduzir a pressão de fundo, verificar se o Access_Token expira deve ser feito localmente no aplicativo. Ao comparar o valor keyexpires_in do token (Permanecer no período de validade), bem como o tempo de solicitação de registro local e o horário atual, é fácil determinar se o Access_token expirou. Se expirar, você precisará obter um novo access_token através do refresh_token. Como o período de validade do Access_Token é de apenas 2 horas, essa verificação é necessária. O mesmo vale para refresh_token.
Resumir
O exposto acima estão as três linhas de código introduzidas pelo editor para implementar rapidamente o serviço Spring Boot OAuth2. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!