中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

3行代碼快速實現Spring Boot Oauth2服務功能

發布時間:2020-09-27 01:56:02 來源:腳本之家 閱讀:233 作者:五毛程序員 欄目:編程語言

這里的3行代碼并不是指真的只需要寫3行代碼,而是基于我已經寫好的一個Spring Boot Oauth3服務。僅僅需要修改3行數據庫配置信息,即可得到一個Spring Boot Oauth3服務。

項目地址https://github.com/jeesun/oauthserver

oauthserver

簡介

oauthserver是一個基于Spring Boot Oauth3的完整的獨立的Oauth服務器。僅僅需要創建相關數據表,修改數據庫的連接信息,你就可以得到一個Oauth服務器。

支持的關系型數據庫

已實現的功能:

  1. 集成Spring Boot Oauth3,實現Oauth服務;
  2. token保存到關系型數據庫;
  3. 日志記錄保存到文件,并按日歸檔;
  4. 數據庫連接信息加密;
  5. 集成Druid數據庫連接池。

使用流程

1. 建表

PostgreSQL

請執行src/main/resources/schema-pg.sql,完成數據表的創建和測試數據的導入。

MySQL

請執行src/main/resources/schema-mysql.sql,完成數據表的創建和測試數據的導入。

2. 修改數據庫連接信息

在application.yml中,配置著數據庫的連接信息。其中,配置項username和password是要經過jasypt加密的,不能直接填明文。加密密鑰由jasypt.encryptor.password配置。你需要使用test目錄下的UtilTests工具得到加密字符串。

PostgreSQL
# PostgreSQL連接信息
  driver-class-name: org.postgresql.Driver
  url: jdbc:postgresql://127.0.0.1:5432/thymelte?useUnicode=true&characterEncoding=UTF-8
  username: ENC(hTpbG9fq+7P3SntmXuNtDxbtWDqRuPV+)
  password: ENC(abdq6LyOspryFQHCqzEMTxRozyJVjIA4)
MySQL
# MySQL連接信息
  driver-class-name: com.mysql.jdbc.Driver
  url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
  username: ENC(YiYjVwTulDGN//YaB3KbuA==)
  password: ENC(9oaIJkFgGSDFaHH3OXY63RHWQ+amDmiJ)

3. 運行

現在,一切已準備就緒。運行項目,當程序成功啟動時,即表明你已配置成功。

4. 測試

在建表時,我已經向表添加了測試數據。以下請求參數的值,均是測試數據,在數據表中可以找得到。請根據需求到數據表中修改對應的值。

在表oauth_client_details表中,已有一條測試數據。列client_id和client_secret的值,分別對應Basic Oauth的請求參數username和password的值。而列access_token_validity和列refresh_token_validity,分別代表access_token和refresh_token的有效期時間,以秒為單位。測試數據7200和5184000,分別代表2個小時和2個月(60天)。這是一個比較合理的有效期時間的設置,可以參考。

token相關的接口,都需要進行Basic Oauth認證。

1、根據用戶名和密碼獲取access_token

POST http://localhost:8182/oauth/token?grant_type=password&username=jeesun&password=1234567890c

成功示例:

{
  "access_token": "ca582cd1-be6c-4a5a-82ec-10af7a8e06eb",
  "token_type": "bearer",
  "refresh_token": "c24a6143-97c8-4642-88b9-d5c5b902b487",
  "expires_in": 3824,
  "scope": "read write trust"
}

失敗示例(用戶名或者密碼錯誤)

{
  "error": "invalid_grant",
  "error_description": "Bad credentials"
}

2、檢查access_token

GET http://localhost:8182/oauth/check_token?token=ca582cd1-be6c-4a5a-82ec-10af7a8e06eb

成功示例

{
  "aud": [
    "oauth3-resource"
  ],
  "exp": 1524507296,
  "user_name": "jeesun",
  "authorities": [
    "ROLE_ADMIN",
    "ROLE_USER"
  ],
  "client_id": "clientIdPassword",
  "scope": [
    "read",
    "write",
    "trust"
  ]
}

失敗示例(access_token已過期)

{
  "error": "invalid_token",
  "error_description": "Token was not recognised"
}

3、根據refresh_token獲取新的access_token

POST http://localhost:8182/oauth/token?grant_type=refresh_token&refresh_token=c24a6143-97c8-4642-88b9-d5c5b902b487

成功示例

{
  "access_token": "690ecd7d-f2b7-4faa-ac45-5b7a319478e8",
  "token_type": "bearer",
  "refresh_token": "c24a6143-97c8-4642-88b9-d5c5b902b487",
  "expires_in": 7199,
  "scope": "read write trust"
}

app實踐指南

app獲取到token信息后,需要保存token信息和請求時間。在傳access_token之前,需要檢查access_token是否過期。為了減少后臺壓力,檢查access_token是否過期應該是在app本地完成。通過token的keyexpires_in(剩余有效期)的值,以及本地記錄的請求時間,和當前時間做對比,可以很方便地判斷出access_token是否過期。如果過期了,需要通過refresh_token獲取新的access_token。因為access_token的有效期只有2個小時,這個驗證是必須的。refresh_token同理。

總結

以上所述是小編給大家介紹的3行代碼快速實現Spring Boot Oauth3服務,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

娄烦县| 麟游县| 建瓯市| 台北县| 榆社县| 如东县| 黄浦区| 利辛县| 阜新市| 韩城市| 广昌县| 靖州| 汉川市| 突泉县| 富顺县| 黑山县| 且末县| 望奎县| 玉溪市| 马公市| 阜宁县| 郸城县| 华阴市| 榆中县| 当阳市| 乐平市| 河南省| 鄂州市| 柳江县| 南平市| 乾安县| 本溪市| 乌鲁木齐县| 巴楚县| 巴塘县| 邻水| 黄山市| 黎城县| 那曲县| 舞钢市| 介休市|