Las 3 líneas de código aquí no significan que realmente solo necesite escribir 3 líneas de código, sino en base a un servicio Spring Boot OAuth2 que he escrito. Solo necesita modificar 3 líneas de información de configuración de la base de datos para obtener un servicio Spring Boot OAuth2.
Dirección del proyecto https://github.com/jeesun/oauthserver
oauthserver
Introducción
OAuthServer es un servidor OAuth independiente completo basado en Spring Boot OAuth2. Simplemente cree tablas de datos relevantes y modifique la información de conexión de la base de datos, y puede obtener un servidor OAuth.
Bases de datos relacionales compatibles:
Funciones implementadas:
Proceso de uso
1. Crear tabla
Postgresql
Ejecute SRC/Main/Resources/Schema-PG.SQL para completar la creación de la tabla de datos e importar los datos de prueba.
Mysql
Ejecute src/main/recursos/esquema-mysql.sql para completar la creación de la tabla de datos y la importación de datos de prueba.
2. Modificar la información de conexión de la base de datos
En Application.yml, se configura la información de conexión de la base de datos. Entre ellos, el nombre de usuario y la contraseña de los elementos de configuración deben estar encriptados por Jasypt y no pueden completarse directamente. La clave de cifrado está configurada por jasypt.ecryptor.password. Debe usar la herramienta Utiltests en el directorio de prueba para obtener la cadena cifrada.
Postgresql# Postgresql Información de conexión de conexión-Class-Class-Name: org.postgresql.driver url: jdbc: postgresql: //127.0.0.1: 5432/thymelte? Useunicode = true y caracteres = utf-8 usernambt: enc (htpbg9fq+7p3p3p3p3p3xuntdxbt+) ENC (ABDQ6LYSUSPRYFQHCQZEMTXROYJVJIA4) mySQL# mysql información de conexión controlador-class-class: com.mysql.jdbc.driver url: jdbc: mysql: //127.0.0.1: 3306/test? Usounicode = verdadero y característico = utilicDing = Utf-8 & USessl Enc (yiyjvwtuldgn // yab3kbua ==) Contraseña: ENC (9OAIJKFGGSDFAHH3OXY63RHWQ+AMDMIJ)
3. Corre
Ahora, todo está listo. Ejecutar el proyecto. Cuando el programa comienza con éxito, significa que lo ha configurado con éxito.
4. Prueba
He agregado datos de prueba a la tabla al construir la tabla. Los valores de los siguientes parámetros de solicitud son todos los datos de prueba y se pueden encontrar en la tabla de datos. Vaya a la tabla de datos para modificar el valor correspondiente de acuerdo con sus requisitos.
En la tabla OAuth_client_Details, ya hay datos de prueba. Los valores de las columnas client_id y client_secret corresponden a los valores de los parámetros de solicitud de OAuth básicos, nombre de usuario y contraseña, respectivamente. Las columnas access_token_validez y la columna refresh_token_validity representan el período de validez de access_token y refresh_token respectivamente, en segundos. Los datos de prueba 7200 y 5184000 representan 2 horas y 2 meses (60 días) respectivamente. Esta es una configuración relativamente razonable del tiempo de validez, que puede usarse como referencia.
Todas las interfaces relacionadas con los tokens requieren una autenticación básica de OAuth.
1. Obtenga Access_Token de acuerdo con el nombre de usuario y la contraseña
Post http: // localhost: 8182/oauth/token? Grant_type = contraseña y nombre de usuario = jeesun & contraseña = 1234567890c
Ejemplo exitoso:
{ "access_token": "ca582cd1-be6c-4a5a-82ec-10af7a8e06eb", "token_type": "bearer", "refresh_token": "c24a6143-97c8-4642-88b9-d5c5b902b487", "expires_in": 3824, "Alcance": "Leer Trust de escritura"}Ejemplo de falla (nombre de usuario o contraseña incorrectos)
{"Error": "Invalid_grant", "Error_description": "Credenciales malas"}2. Verifique Access_Token
Obtener http: // localhost: 8182/oauth/check_token? Token = CA582CD1-BE6C-4A5A-82EC-10AF7A8E06EB
Ejemplo exitoso
{"aud": ["oauth2-resource"], "exp": 1524507296, "user_name": "jeesun", "autoridades": ["role_admin", "role_user"], "client_id": "clientidpassword", "alcance": ["leer", "fideicomiso"]}Ejemplo de falla (Access_Token expirado)
{"Error": "Invalid_Token", "Error_description": "Token no fue reconocido"}3. Obtenga nuevo Access_Token de acuerdo con Refresh_Token
Post http: // localhost: 8182/oauth/token? Grant_type = refresh_token & refresh_token = C24a6143-97c8-4642-88b9-d5c5b902b4877
Ejemplo exitoso
{ "access_token": "690ecd7d-f2b7-4faa-ac45-5b7a319478e8", "token_type": "bearer", "refresh_token": "c24a6143-97c8-4642-88b9-d5c5b902b487", "expires_in": 7199, "Alcance": "Leer Trust de escritura"}Guía de práctica de aplicaciones
Después de que la aplicación obtiene la información del token, debe guardar la información del token y el tiempo de solicitud. Antes de pasar el access_token, debe verificar si el access_token expira. Para reducir la presión de fondo, verificando si Access_Token expira debe hacerse localmente en la aplicación. Al comparar el valor KeyExpires_IN (permanecer de validez) del token, así como el tiempo de solicitud de registro local, y el tiempo actual, es fácil determinar si el access_token ha expirado. Si caduca, debe obtener un nuevo access_token a través de refresh_token. Debido a que el período de validez de Access_Token es de solo 2 horas, esta verificación es necesaria. Lo mismo ocurre con refresh_token.
Resumir
Lo anterior son las 3 líneas de código introducidas por el editor para implementar rápidamente el servicio Spring Boot OAuth2. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!