激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(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行代碼并不是指真的只需要寫3行代碼,而是基于我已經(jīng)寫好的一個(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)過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已過期)

 
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是否過期。為了減少后臺(tái)壓力,檢查access_token是否過期應(yīng)該是在app本地完成。通過token的keyexpires_in(剩余有效期)的值,以及本地記錄的請(qǐng)求時(shí)間,和當(dāng)前時(shí)間做對(duì)比,可以很方便地判斷出access_token是否過期。如果過期了,需要通過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ì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本一区二区不卡在线观看 | 激情综合网俺也去 | 午夜精品久久久久久久久久久久久蜜桃 | 色婷婷久久久久久 | 看免费毛片| 国产激爽大片在线播放 | 精选久久 | 一级做a爱片性色毛片 | 一区二区久久精品66国产精品 | 色婷婷久久一区二区 | 国产一区二区三区精品在线观看 | 亚洲综合一区在线观看 | 国产一级毛片高清视频完整版 | 九艹在线 | 国产青草视频在线观看 | 在线视频 欧美日韩 | 欧美成人精品 | 精精国产xxxx视频在线野外 | 日本特级a一片免费观看 | 亚洲卡通动漫在线观看 | 国产一级做a爰片在线看 | 亚洲av一级毛片特黄大片 | 久久资源总站 | 国产无限资源在线观看 | 久久免费视频在线 | 一级性生活免费视频 | 日韩伦理电影免费观看 | 天堂福利电影 | 日韩精品网站在线观看 | 极品一级片 | 99久久久国产精品 | 成人在线免费观看小视频 | 亚洲3atv精品一区二区三区 | 国内精品免费一区二区2001 | 国产在线第一区 | 国产91九色 | 国产精品亚洲综合 | 国产日产精品一区二区三区四区 | 色播视频在线播放 | 久久在现视频 | 欧美18一12sex性处hd |