一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 3行代碼快速實(shí)現(xiàn)Spring Boot Oauth2服務(wù)功能

3行代碼快速實(shí)現(xiàn)Spring Boot Oauth2服務(wù)功能

2021-04-23 11:52五毛程序員 Java教程

oauthserver是一個(gè)基于Spring Boot Oauth2的完整的獨(dú)立的Oauth服務(wù)器。僅僅需要?jiǎng)?chuàng)建相關(guān)數(shù)據(jù)表,修改數(shù)據(jù)庫(kù)的連接信息,你就可以得到一個(gè)Oauth服務(wù)器。這篇文章給大家介紹3行代碼快速實(shí)現(xiàn)Spring Boot Oauth2服務(wù)功能,需要的朋友參考下吧

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

項(xiàng)目地址 https://github.com/jeesun/oauthserver

oauthserver

簡(jiǎn)介

oauthserver是一個(gè)基于spring boot oauth2的完整的獨(dú)立的oauth服務(wù)器。僅僅需要?jiǎng)?chuàng)建相關(guān)數(shù)據(jù)表,修改數(shù)據(jù)庫(kù)的連接信息,你就可以得到一個(gè)oauth服務(wù)器。

支持的關(guān)系型數(shù)據(jù)庫(kù):

  • postgresql
  • mysql

已實(shí)現(xiàn)的功能:

  1. 集成spring boot oauth2,實(shí)現(xiàn)oauth服務(wù);
  2. token保存到關(guān)系型數(shù)據(jù)庫(kù);
  3. 日志記錄保存到文件,并按日歸檔;
  4. 數(shù)據(jù)庫(kù)連接信息加密;
  5. 集成druid數(shù)據(jù)庫(kù)連接池。

使用流程

1. 建表

postgresql

請(qǐng)執(zhí)行src/main/resources/schema-pg.sql,完成數(shù)據(jù)表的創(chuàng)建和測(cè)試數(shù)據(jù)的導(dǎo)入。

mysql

請(qǐng)執(zhí)行src/main/resources/schema-mysql.sql,完成數(shù)據(jù)表的創(chuàng)建和測(cè)試數(shù)據(jù)的導(dǎo)入。

2. 修改數(shù)據(jù)庫(kù)連接信息

在application.yml中,配置著數(shù)據(jù)庫(kù)的連接信息。其中,配置項(xiàng)username和password是要經(jīng)過(guò)jasypt加密的,不能直接填明文。加密密鑰由jasypt.encryptor.password配置。你需要使用test目錄下的utiltests工具得到加密字符串。

 
1
2
3
4
5
6
7
8
9
10
11
12
postgresql
# postgresql連接信息
  driver-class-name: org.postgresql.driver
  url: jdbc:postgresql://127.0.0.1:5432/thymelteuseunicode=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/testuseunicode=true&characterencoding=utf-8&usessl=false
  username: enc(yiyjvwtuldgn//yab3kbua==)
  password: enc(9oaijkfggsdfahh3oxy63rhwq+amdmij)

3. 運(yùn)行

現(xiàn)在,一切已準(zhǔn)備就緒。運(yùn)行項(xiàng)目,當(dāng)程序成功啟動(dòng)時(shí),即表明你已配置成功。

4. 測(cè)試

在建表時(shí),我已經(jīng)向表添加了測(cè)試數(shù)據(jù)。以下請(qǐng)求參數(shù)的值,均是測(cè)試數(shù)據(jù),在數(shù)據(jù)表中可以找得到。請(qǐng)根據(jù)需求到數(shù)據(jù)表中修改對(duì)應(yīng)的值。

在表oauth_client_details表中,已有一條測(cè)試數(shù)據(jù)。列client_id和client_secret的值,分別對(duì)應(yīng)basic oauth的請(qǐng)求參數(shù)username和password的值。而列access_token_validity和列refresh_token_validity,分別代表access_token和refresh_token的有效期時(shí)間,以秒為單位。測(cè)試數(shù)據(jù)7200和5184000,分別代表2個(gè)小時(shí)和2個(gè)月(60天)。這是一個(gè)比較合理的有效期時(shí)間的設(shè)置,可以參考。

token相關(guān)的接口,都需要進(jìn)行basic oauth認(rèn)證。

1、根據(jù)用戶名和密碼獲取access_token

post http://localhost:8182/oauth/tokengrant_type=password&username=jeesun&password=1234567890c

成功示例:

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

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

 
1
2
3
4
{
  "error": "invalid_grant",
  "error_description": "bad credentials"
}

2、檢查access_token

get http://localhost:8182/oauth/check_tokentoken=ca582cd1-be6c-4a5a-82ec-10af7a8e06eb

成功示例

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
  "aud": [
    "oauth2-resource"
  ],
  "exp": 1524507296,
  "user_name": "jeesun",
  "authorities": [
    "role_admin",
    "role_user"
  ],
  "client_id": "clientidpassword",
  "scope": [
    "read",
    "write",
    "trust"
  ]
}

失敗示例(access_token已過(guò)期)

 
1
2
3
4
{
  "error": "invalid_token",
  "error_description": "token was not recognised"
}

3、根據(jù)refresh_token獲取新的access_token

post http://localhost:8182/oauth/tokengrant_type=refresh_token&refresh_token=c24a6143-97c8-4642-88b9-d5c5b902b487

成功示例

 
1
2
3
4
5
6
7
{
  "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實(shí)踐指南

app獲取到token信息后,需要保存token信息和請(qǐng)求時(shí)間。在傳access_token之前,需要檢查access_token是否過(guò)期。為了減少后臺(tái)壓力,檢查access_token是否過(guò)期應(yīng)該是在app本地完成。通過(guò)token的keyexpires_in(剩余有效期)的值,以及本地記錄的請(qǐng)求時(shí)間,和當(dāng)前時(shí)間做對(duì)比,可以很方便地判斷出access_token是否過(guò)期。如果過(guò)期了,需要通過(guò)refresh_token獲取新的access_token。因?yàn)閍ccess_token的有效期只有2個(gè)小時(shí),這個(gè)驗(yàn)證是必須的。refresh_token同理。

總結(jié)

以上所述是小編給大家介紹的3行代碼快速實(shí)現(xiàn)spring boot oauth2服務(wù),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

原文鏈接:https://www.jianshu.com/p/20488e032771

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 喷潮女王cytherea全部视频 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | 思久久 | 800精品国产导航 | 色就色欧美综合偷拍区a | 日本色资源 | 女人叉开腿让男人捅 | 成人性爱视频在线观看 | 亚洲AV无码一区二区三区乱子伦 | 亚州在线播放 | sxx免费看观看美女 sss亚洲国产欧美一区二区 | 交换性关系中文字幕6 | 国产乱码免费卡1卡二卡3卡四 | 日本漫画大全之工之口 | 亚洲一二三区视频 | 跪趴好紧h | 国产福利不卡一区二区三区 | 性色视频免费 | 国产真实偷乱视频在线观看 | 干美女视频 | 俄罗斯烧性春三级k8播放 | 免费看又黄又爽又猛的视频软件- | 国产精品合集久久久久青苹果 | 沉香如屑西瓜视频免费观看完整版 | 我的青梅竹马是消防员2季未增删免费 | 国产精品久久毛片完整版 | 嫩草影院永久一二三入口 | 羲义嫁密着中出交尾gvg794 | 精品久久久久久 | 好男人资源大全免费观看 | 亚洲国产精品久久精品成人网站 | 99热成人精品免费久久 | 亚洲成色www久久网站 | 国内视频一区二区三区 | 日韩精品一区二区三区免费视频 | 国产精品视频1区 | 亚洲色图综合网 | 久久久高清国产999尤物 | 我半夜摸妺妺的奶C了她软件 | 国产精品视频2020 | 国产成人综合亚洲一区 |