Les 3 lignes de code ici ne signifient pas que vous n'avez vraiment besoin d'écrire 3 lignes de code, mais sur la base d'un service Spring Boot OAuth2 que j'ai écrit. Il vous suffit de modifier 3 lignes d'informations de configuration de la base de données pour obtenir un service Spring Boot OAuth2.
Adresse du projet https://github.com/jeesun/oauthserver
émousser
Introduction
OAuthServer est un serveur OAuth autonome complet basé sur Spring Boot OAuth2. Créez simplement des tables de données pertinentes et modifiez les informations de connexion de la base de données, et vous pouvez obtenir un serveur OAuth.
Bases de données relationnelles prises en charge:
Fonctions implémentées:
Processus d'utilisation
1. Créer un tableau
Postgresql
Veuillez exécuter SRC / Main / Resources / Schema-PG.SQL pour compléter la création du tableau de données et importer les données de test.
Mysql
Veuillez exécuter SRC / Main / Resources / Schema-Mysql.SQL pour terminer la création du tableau de données et l'importation de données de test.
2. Modifier les informations de connexion à la base de données
Dans Application.yml, les informations de connexion de la base de données sont configurées. Parmi eux, le nom d'utilisateur et le mot de passe des éléments de configuration doit être chiffré par Jasypt et ne peut pas être rempli directement. La touche de chiffrement est configurée par jasypt.encryptor.password. Vous devez utiliser l'outil UilTests dans le répertoire de test pour obtenir la chaîne cryptée.
PostgreSQL # Postgresql Informations de connexion Informations Driver-Class-Name: org.postgresql.driver URL: JDBC: PostgreSql: //127.0.0.1: 5432 / thymelte? UseUniCode = True & CaractoDcoding = UTF-8 USERNAM ENC (Abdq6LyospryfqhcQzEMTXROZYJVJIA4) MySQL # MySQL Connection Information Driver-Class-Name: com.mysql.jdbc.0.1: 3306 / Test? Useunicode = True & CaractorCoding = UTF-8 & usessl = usUnode = True & CaractorCcoding = UTF-8 & usessl = usUnode = True & CharacterEncoding = UTF-8 & usessl = usUnDame: True & CaracterCcoding = UTF-8 & usessl = usUnDame: True & CharacterCcoding = UTF-8 & usessl = USUSEAM ENC (yiyjvwtuldgn // yab3kbua ==) Mot de passe: ENC (9oaijkfggsdfahh3oxy63rhwq + amdmij)
3. RUN
Maintenant, tout est prêt. Exécuter le projet. Lorsque le programme commence avec succès, cela signifie que vous l'avez configuré avec succès.
4. Test
J'ai ajouté des données de test au tableau lors de la construction du tableau. Les valeurs des paramètres de demande suivantes sont toutes des données de test et peuvent être trouvées dans le tableau de données. Veuillez accéder au tableau de données pour modifier la valeur correspondante en fonction de vos exigences.
Dans la table OAuth_Client_Details, il y a déjà des données de test. Les valeurs des colonnes client_id et client_secret correspondent aux valeurs des paramètres de demande OAuth de base respectivement le nom d'utilisateur et le mot de passe. Les colonnes Access_token_validité et colonnes Refresh_Token_Validité représentent respectivement la période de validité d'accès_token et de refresh_token, en secondes. Les données de test 7200 et 5184000 représentent respectivement 2 heures et 2 mois (60 jours). Il s'agit d'un réglage relativement raisonnable du temps de validité, qui peut être utilisé comme référence.
Toutes les jetons liés aux interfaces nécessitent une authentification OAuth de base.
1. Obtenez Access_token en fonction du nom d'utilisateur et du mot de passe
Post http: // localhost: 8182 / oauth / token? Grant_type = mot de passe et nom d'utilisateur = jeesun & mot de passe = 1234567890c
Exemple réussi:
{"Access_token": "CA582CD1-BE6C-4A5A-82EC-10AF7A8E06EB", "Token_Type": "Bearer", "Refresh_Token": "C24A6143-97C8-4642-88B9-D5C5B902B487", "Expires_in": 3824, " "Scope": "Lire Write Trust"}Exemple d'échec (nom d'utilisateur ou mot de passe incorrect)
{"error": "invalid_grant", "error_description": "Bad idemededentials"}2. Vérifiez Access_token
Obtenez http: // localhost: 8182 / oauth / check_token? Token = CA582cd1-be6c-4a5a-82ec-10af7a8e06eb
Exemple réussi
{"Aud": ["oAuth2-Resource"], "Exp": 1524507296, "User_name": "Jeesun", "Autorités": ["Role_Admin", "Role_User"], "Client_id": "ClientIdPassword", "Scope": [read "," écriture "," fiducie "]}Exemple d'échec (Access_token expiré)
{"Error": "invalid_token", "error_description": "Le jeton n'a pas été reconnu"}3. Obtenez un nouvel Access_token selon Refresh_token
Post http: // localhost: 8182 / oauth / token? Grant_type = refresh_token & refresh_token = c24a6143-97c8-4642-88b9-d5c5b902b487
Exemple réussi
{"Access_token": "690ecd7d-f2b7-4faa-ac45-5b7a319478e8", "token_type": "Bearer", "refresh_token": "c24a6143-97c8-4642-88b9-d5c5b902b487", "Expires_in": 71999, "::": 71999, "::": 71999, ":: 71999,":: "::":: "::":: ": 71999,":: "::": 71999, "::": 71999, "::": 71999, "::": 71999, "::": 71999. "Scope": "Lire Write Trust"}Guide de pratique de l'application
Une fois que l'application a obtenu les informations de jeton, elle doit enregistrer les informations de jeton et l'heure de demande. Avant de passer l'accès_token, vous devez vérifier si l'accès_token expire. Pour réduire la pression des antécédents, la vérification si Access_token expire doit être effectuée localement dans l'application. En comparant la valeur KeyExpires_in (Rester Validity Période) du Token, ainsi que l'heure de demande d'enregistrement locale, et l'heure actuelle, il est facile de déterminer si l'accès_token a expiré. S'il expire, vous devez obtenir un nouvel Access_token via Refresh_Token. Étant donné que la période de validité de Access_token ne est que de 2 heures, cette vérification est nécessaire. Il en va de même pour Refresh_token.
Résumer
Ce qui précède est les 3 lignes de code introduites par l'éditeur pour implémenter rapidement le service Spring Boot OAuth2. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!