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

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、荊州ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的荊州網(wǎng)站制作公司
項目地址https://github.com/jeesun/oauthserver
oauthserver
簡介
oauthserver是一個基于Spring Boot Oauth3的完整的獨立的Oauth服務(wù)器。僅僅需要創(chuàng)建相關(guān)數(shù)據(jù)表,修改數(shù)據(jù)庫的連接信息,你就可以得到一個Oauth服務(wù)器。
支持的關(guān)系型數(shù)據(jù)庫:
已實現(xiàn)的功能:
使用流程
1. 建表
PostgreSQL
請執(zhí)行src/main/resources/schema-pg.sql,完成數(shù)據(jù)表的創(chuàng)建和測試數(shù)據(jù)的導(dǎo)入。
MySQL
請執(zhí)行src/main/resources/schema-mysql.sql,完成數(shù)據(jù)表的創(chuàng)建和測試數(shù)據(jù)的導(dǎo)入。
2. 修改數(shù)據(jù)庫連接信息
在application.yml中,配置著數(shù)據(jù)庫的連接信息。其中,配置項username和password是要經(jīng)過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. 運行
現(xiàn)在,一切已準備就緒。運行項目,當(dāng)程序成功啟動時,即表明你已配置成功。
4. 測試
在建表時,我已經(jīng)向表添加了測試數(shù)據(jù)。以下請求參數(shù)的值,均是測試數(shù)據(jù),在數(shù)據(jù)表中可以找得到。請根據(jù)需求到數(shù)據(jù)表中修改對應(yīng)的值。
在表oauth_client_details表中,已有一條測試數(shù)據(jù)。列client_id和client_secret的值,分別對應(yīng)Basic Oauth的請求參數(shù)username和password的值。而列access_token_validity和列refresh_token_validity,分別代表access_token和refresh_token的有效期時間,以秒為單位。測試數(shù)據(jù)7200和5184000,分別代表2個小時和2個月(60天)。這是一個比較合理的有效期時間的設(shè)置,可以參考。
token相關(guān)的接口,都需要進行Basic Oauth認證。
1、根據(jù)用戶名和密碼獲取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、根據(jù)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是否過期應(yīng)該是在app本地完成。通過token的keyexpires_in(剩余有效期)的值,以及本地記錄的請求時間,和當(dāng)前時間做對比,可以很方便地判斷出access_token是否過期。如果過期了,需要通過refresh_token獲取新的access_token。因為access_token的有效期只有2個小時,這個驗證是必須的。refresh_token同理。
總結(jié)
以上所述是小編給大家介紹的3行代碼快速實現(xiàn)Spring Boot Oauth3服務(wù),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對創(chuàng)新互聯(lián)網(wǎng)站的支持!
標題名稱:3行代碼快速實現(xiàn)SpringBootOauth2服務(wù)功能
網(wǎng)站網(wǎng)址:http://www.chinadenli.net/article0/iiiooo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、手機網(wǎng)站建設(shè)、用戶體驗、全網(wǎng)營銷推廣、App設(shè)計、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)