91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

OAuth2.0數據庫JDBC存儲客戶端的示例

發布時間:2021-09-10 18:08:50 來源:億速云 閱讀:124 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關 OAuth2.0數據庫JDBC存儲客戶端的示例,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

自動批準授權碼

前面我們授權的流程中,第一步獲取授權碼的時候,都會經歷一個授權是否同意頁面:

OAuth2.0數據庫JDBC存儲客戶端的示例

這個流程就像第三方登錄成功后,提問是否允許獲取昵稱和頭像信息的頁面一樣,這個過程其實是可以自動同意的,需要在客戶端配置中,增加一個自動批準:

OAuth2.0數據庫JDBC存儲客戶端的示例

這樣我們申請授權碼直接就可以得到:

OAuth2.0數據庫JDBC存儲客戶端的示例

在流程需要自動完成的時候,需要這樣配置,如果需要用戶點擊同意,那么這里需要設置為false,不寫默認也是false。

客戶端信息整理

上面的自動批準只是客戶端配置中一個小的配置,下面我們來系統整理一下客戶端所有可配置的內容。首先來看現在已經配置的6個字段:

OAuth2.0數據庫JDBC存儲客戶端的示例

上面的6個字段是我們最常用的也是不可或缺的客戶端信息。不過客戶端的配置還有很多其它的字段,我們來整體看一下:

OAuth2.0數據庫JDBC存儲客戶端的示例

上面的11個字段基本上包括了所有的第三方客戶端的配置內容。下面來一個個詳細講解:

  • withClient 方法:用來配置 client_id ,是必須配置的,用于唯一標識每一個客戶端(client);注冊時必須填寫(也可以服務端自動生成),這個字段是必須的,實際應用也有叫app_key

  • resourceIds 方法:用來配置resource_ids ,表示客戶端能訪問的資源id集合,注冊客戶端時,根據實際需要可選擇資源id,也可以根據不同的注冊流程,賦予對應的額資源id。我們可以為每一個Resource Server(資源服務)設置一個resourceid。再給client授權的時候,可以設置這個client可以訪問哪一些資源實例,如果沒設置,就是對所有的resource都有訪問權限。

  • secret 方法:用來配置 client_secret ,注冊填寫或者服務端自動生成,實際應用也有叫app_secret,

  • scopes 方法 :用來配置 scope ,指定client的權限范圍,比如讀寫權限,比如移動端還是web端權限,all表示全部權限

  • authorizedGrantTypes 方法:用來配置 authorized_grant_types ,可選值, 授權碼模式:authorization_code,密碼模式:password,刷新token: refresh_token, 隱式模式: implicit: 客戶端模式: client_credentials。支持多個用逗號分隔

  • redirectUris 方法: 用來配置 web_server_redirect_uri ,客戶端重定向uri,authorization_code和implicit需要該值進行校驗,注冊時填寫

  • authorities 方法:用來配置 authorities ,指定用戶的權限范圍,如果授權的過程需要用戶登陸,該字段不生效,implicit和client_credentials需要

  • accessTokenValiditySeconds 方法,用來配置 access_token_validity ,設置access_token的有效時間(秒),默認(12小時)

  • refreshTokenValiditySeconds 方法:用來配置 refresh_token_validity ,設置refresh_token有效期(秒),默認(30天)

  • additionalInformation 方法: 用來配置 additional_information ,表示補充信息,可空,值必須是json格式

  • autoApprove 方法:用來配置autoapprove ,默認false,適用于authorization_code模式,設置用戶是否自動approval操作,設置true跳過用戶確認授權操作頁面,直接跳到redirect_uri

下面我們在數據庫中新建一張表,定義這是十一個字段,表名為 oauth_client_details:

OAuth2.0數據庫JDBC存儲客戶端的示例

注意,這里表名必須是 oauth_client_details 是 oauth規定的表名,也是默認的jdbc操作中的表名。我們來增加一條記錄:

OAuth2.0數據庫JDBC存儲客戶端的示例

相比前面的例子,這里多了一個resource_ids的字段值,其它的都和前面的配置一樣。注意secret存儲的是加密后的密文,加密前是secret。

授權服務多了一個resource_id,資源服務也得配置自己的id:

OAuth2.0數據庫JDBC存儲客戶端的示例

默認的jdbc管理客戶端

將配置死的客戶端信息改為jdbc從客戶端查詢的方式很簡單,首先引入數據庫依賴:

OAuth2.0數據庫JDBC存儲客戶端的示例

然后配置數據源:

OAuth2.0數據庫JDBC存儲客戶端的示例

最后修改授權配置類的客戶端配置:

OAuth2.0數據庫JDBC存儲客戶端的示例

可以看到修改后的客戶端配置很簡單,只需要在客戶端配置一個jdbc數據源即可,查詢方法是自動實現的。關于實現,可以參考源碼:

  • org.springframework.security.oauth3.provider.client.JdbcClientDetailsService

里面有寫好的sql語句和增刪改查邏輯:

OAuth2.0數據庫JDBC存儲客戶端的示例

其中有個更新秘鑰的方法,是需要加密方式的:

OAuth2.0數據庫JDBC存儲客戶端的示例

所以我們可以在jdbc方法后面配置加密方式:

OAuth2.0數據庫JDBC存儲客戶端的示例

測試

上面的除了數據庫,其它的配置修改很簡單,下面來測試一下:

OAuth2.0數據庫JDBC存儲客戶端的示例

訪問結果:

OAuth2.0數據庫JDBC存儲客戶端的示例

關于 OAuth2.0數據庫JDBC存儲客戶端的示例就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

横山县| 浦城县| 明光市| 乐至县| 宝山区| 天柱县| 云浮市| 分宜县| 阿拉尔市| 正定县| 泰州市| 壶关县| 三河市| 阿拉善右旗| 泌阳县| 东台市| 南陵县| 武功县| 丹阳市| 南木林县| 沁阳市| 固镇县| 陆丰市| 福鼎市| 江油市| 区。| 龙岩市| 广宁县| 西畴县| 玛多县| 嘉义市| 宁德市| 四川省| 德令哈市| 焦作市| 中超| 霞浦县| 沐川县| 玉田县| 宜宾市| 盐山县|