最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年04月24日 11:18:38   作者:五毛程序員  
oauthserver是一個基于Spring Boot Oauth2的完整的獨立的Oauth服務器。僅僅需要創(chuàng)建相關(guān)數(shù)據(jù)表,修改數(shù)據(jù)庫的連接信息,你就可以得到一個Oauth服務器。這篇文章給大家介紹3行代碼快速實現(xiàn)Spring Boot Oauth2服務功能,需要的朋友參考下吧

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

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

oauthserver

簡介

oauthserver是一個基于Spring Boot Oauth2的完整的獨立的Oauth服務器。僅僅需要創(chuàng)建相關(guān)數(shù)據(jù)表,修改數(shù)據(jù)庫的連接信息,你就可以得到一個Oauth服務器。

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

  • PostgreSQL
  • MySQL

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

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

使用流程

1. 建表

PostgreSQL

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

MySQL

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

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)在,一切已準備就緒。運行項目,當程序成功啟動時,即表明你已配置成功。

4. 測試

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

在表oauth_client_details表中,已有一條測試數(shù)據(jù)。列client_id和client_secret的值,分別對應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": [
    "oauth2-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是否過期應該是在app本地完成。通過token的keyexpires_in(剩余有效期)的值,以及本地記錄的請求時間,和當前時間做對比,可以很方便地判斷出access_token是否過期。如果過期了,需要通過refresh_token獲取新的access_token。因為access_token的有效期只有2個小時,這個驗證是必須的。refresh_token同理。

總結(jié)

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

相關(guān)文章

  • 利用JavaFX工具構(gòu)建Reactive系統(tǒng)

    利用JavaFX工具構(gòu)建Reactive系統(tǒng)

    這篇文章主要介紹了使用JavaFX構(gòu)建Reactive系統(tǒng),利用JavaFX工具集中的新的超棒特性來構(gòu)建響應式的快速應用程序,感興趣的小伙伴們可以參考一下
    2016-02-02
  • java隊列中Queue與Deque的區(qū)別面試精講

    java隊列中Queue與Deque的區(qū)別面試精講

    這篇文章主要為大家介紹了java隊列中Queue與Deque的區(qū)別面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • springmvc模式的上傳和下載實現(xiàn)解析

    springmvc模式的上傳和下載實現(xiàn)解析

    這篇文章主要介紹了springmvc模式下的上傳和下載實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • java如何獲取本地操作系統(tǒng)進程列表

    java如何獲取本地操作系統(tǒng)進程列表

    本文介紹了java中是如何獲取當前本地操作系統(tǒng)正在運行的系統(tǒng)進程的信息,需要的朋友可以參考下
    2015-07-07
  • Java中的System.arraycopy()淺復制方法詳解

    Java中的System.arraycopy()淺復制方法詳解

    這篇文章主要介紹了Java中的System.arraycopy()淺復制方法詳解,Java數(shù)組的復制操作可以分為深度復制和淺度復制,簡單來說深度復制,可以將對象的值和對象的內(nèi)容復制;淺復制是指對對象引用的復制,需要的朋友可以參考下
    2023-11-11
  • MyBatis-Plus基于MyBatis封裝 BaseMapper的流程步驟

    MyBatis-Plus基于MyBatis封裝 BaseMapper的流程步驟

    MyBatis-Plus作為 MyBatis 的增強框架,通過 BaseMapper 提供了通用的 CRUD 操作,極大地提升了開發(fā)效率,為了更透徹地理解其封裝機制,本文將采用鏈路追蹤的思維,從開發(fā)者調(diào)用接口開始,分析其如何基于 MyBatis 完成對 BaseMapper 的封裝,需要的朋友可以參考下
    2025-04-04
  • SpringCloud使用Ribbon實現(xiàn)負載均衡的流程步驟

    SpringCloud使用Ribbon實現(xiàn)負載均衡的流程步驟

    在微服務架構(gòu)中,負載均衡是一項關(guān)鍵的技術(shù),它可以確保各個服務節(jié)點間的負載分布均勻,提高整個系統(tǒng)的穩(wěn)定性和性能,Spring Cloud 中的 Ribbon 就是一種負載均衡的解決方案,本文將深入探討 Ribbon 的原理和在微服務中的應用,需要的朋友可以參考下
    2024-02-02
  • Spring Batch 入門示例

    Spring Batch 入門示例

    本文將向您展示如何使用Spring Boot創(chuàng)建一個的Spring Batch的Hello World示例。對和我一樣入門的有一定的幫助,感興趣的小伙伴們可以參考一下
    2021-06-06
  • mybatis中#{}和${}的區(qū)別詳解

    mybatis中#{}和${}的區(qū)別詳解

    本文主要介紹了mybatis中#{}和${}的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • SpringBoot整合Quartz實現(xiàn)動態(tài)配置的代碼示例

    SpringBoot整合Quartz實現(xiàn)動態(tài)配置的代碼示例

    這篇文章將介紹如何把Quartz定時任務做成接口,實現(xiàn)以下功能的動態(tài)配置添加任務,修改任務,暫停任務,恢復任務,刪除任務,任務列表,任務詳情,文章通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-07-07

最新評論

新余市| 吐鲁番市| 永胜县| 齐齐哈尔市| 贵港市| 时尚| 宜春市| 都匀市| 承德县| 三门峡市| 苗栗县| 屯门区| 上虞市| 明光市| 屏南县| 青田县| 兴化市| 建德市| 屯留县| 平泉县| 青海省| 阿合奇县| 元氏县| 三原县| 榆中县| 广元市| 临澧县| 广德县| 微博| 民勤县| 双柏县| 信阳市| 天台县| 临泽县| 漳平市| 刚察县| 临朐县| 秦安县| 九江市| 南华县| 阳原县|