日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringSecurity OAuth2中表结构说明

發布時間:2024/4/14 javascript 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringSecurity OAuth2中表结构说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

建表語句

官方SQL地址:?spring-security-oauth/schema.sql at main · spring-projects/spring-security-oauth · GitHub

oauth_client_details【核心表】

字段名字段說明
client_id主鍵,必須唯一,不能為空. 用于唯一標識每一個客戶端(client); 在注冊時必須填寫(也可由服務端自動生成). 對于不同的grant_type,該字段都是必須的. 在實際應用中的另一個名稱叫appKey,與client_id是同一個概念
resource_ids資源的編號,相當于要訪問的資源服務器編號
client_secret用于指定客戶端(client)的訪問密匙; 在注冊時必須填寫(也可由服務端自動生成). 對于不同的grant_type,該字段都是必須的. 在實際應用中的另一個名稱叫appSecret,與client_secret是同一個概念.
scope指定客戶端申請的權限范圍,可選值包括read,write,trust;若有多個權限范圍用逗號(,)分隔,如:“read,write”. scope的值與security.xml中配置的?intercept-url的access屬性有關系.如?intercept-url的配置為?intercept-url pattern="/m/**"access=“ROLE_MOBILE,SCOPE_READ”/>則說明訪問該URL時的客戶端必須有read權限范圍. write的配置值為SCOPE_WRITE, trust的配置值為SCOPE_TRUST. 在實際應該中, 該值一般由服務端指定, 常用的值為read,write.
authorized_grant_types指定客戶端支持的grant_type,可選值包括<authorization_code,password,refresh_token,implicit,client_credentials, 若支持多個grant_type用逗號(,)分隔,如: “authorization_code,password”. 在實際應用中,當注冊時,該字段是一般由服務器端指定的,而不是由申請者去選擇的,最常用的grant_type組合有:“authorization_code,refresh_token”(針對通過瀏覽器訪問的客戶端);“password,refresh_token”(針對移動設備的客戶端). implicit與client_credentials在實際中很少使用.
web_server_redirect_uri客戶端的重定向URI,可為空, 當grant_type為authorization_code或implicit時, 在Oauth的流程中會使用并檢查與注冊時填寫的redirect_uri是否一致. 下面分別說明:當grant_type=authorization_code時, 第一步 從 spring-oauth-server獲取 'code’時客戶端發起請求時必須有redirect_uri參數, 該參數的值必須與 web_server_redirect_uri的值一致. 第二步 用 ‘code’ 換取 ‘access_token’ 時客戶也必須傳遞相同的redirect_uri. 在實際應用中,web_server_redirect_uri在注冊時是必須填寫的, 一般用來處理服務器返回的code, 驗證state是否合法與通過code去換取access_token值.在spring-oauth-client項目中, 可具體參考AuthorizationCodeController.java中的authorizationCodeCallback方法.當grant_type=implicit時通過redirect_uri的hash值來傳遞access_token值.如:
authorities指定客戶端所擁有的Spring Security的權限值,可選, 若有多個權限值,用逗號(,)分隔, 如: "ROLE_
access_token_validity設定客戶端的access_token的有效時間值(單位:秒),可選, 若不設定值則使用默認的有效時間值(60 * 60 * 12, 12小時). 在服務端獲取的access_token JSON數據中的expires_in字段的值即為當前access_token的有效時間值. 在項目中, 可具體參考DefaultTokenServices.java中屬性accessTokenValiditySeconds. 在實際應用中, 該值一般是由服務端處理的, 不需要客戶端自定義.refresh_token_validity 設定客戶端的refresh_token的有效時間值(單位:秒),可選,若不設定值則使用默認的有效時間值(60 * 60 * 24 * 30, 30天). 若客戶端的grant_type不包括refresh_token,則不用關心該字段 在項目中, 可具體參考DefaultTokenServices.java中屬性refreshTokenValiditySeconds. 在實際應用中, 該值一般是由服務端處理的, 不需要客戶端自定義.
additional_information這是一個預留的字段,在Oauth的流程中沒有實際的使用,可選,但若設置值,必須是JSON格式的數據,如:{“country”:“CN”,“country_code”:“086”}按照spring-security-oauth項目中對該字段的描述 Additional information for this client, not need by the vanilla OAuth protocolbut might be useful, for example,for storing descriptive information. (詳見ClientDetails.java的getAdditionalInformation()方法的注釋)在實際應用中, 可以用該字段來存儲關于客戶端的一些其他信息,如客戶端的國家,地區,注冊時的IP地址等等.create_time數據的創建時間,精確到秒,由數據庫在插入數據時取當前系統時間自動生成(擴展字段)
archived用于標識客戶端是否已存檔(即實現邏輯刪除),默認值為’0’(即未存檔). 對該字段的具體使用請參考CustomJdbcClientDetailsService.java,在該類中,擴展了在查詢client_details的SQL加上archived = 0條件 (擴展字段)
trusted設置客戶端是否為受信任的,默認為’0’(即不受信任的,1為受信任的). 該字段只適用于grant_type="authorization_code"的情況,當用戶登錄成功后,若該值為0,則會跳轉到讓用戶Approve的頁面讓用戶同意授權, 若該字段為1,則在登錄后不需要再讓用戶Approve同意授權(因為是受信任的). 對該字段的具體使用請參考OauthUserApprovalHandler.java. (擴展字段)
autoapprove設置用戶是否自動Approval操作, 默認值為 ‘false’, 可選值包括 ‘true’,‘false’, ‘read’,‘write’. 該字段只適用于grant_type="authorization_code"的情況,當用戶登錄成功后,若該值為’true’或支持的scope值,則會跳過用戶Approve的頁面, 直接授權. 該字段與 trusted 有類似的功能, 是spring-security-oauth2 的 2.0 版本后添加的新屬性. 在項目中,主要操作oauth_client_details表的類是JdbcClientDetailsService.java, 更多的細節請參考該類. 也可以根據實際的需要,去擴展或修改該類的實現.

oauth_client_token

該表用于在客戶端系統中存儲從服務端獲取的token數據, 在spring-oauth-server項目中未使用到.。對 oauth_client_token表的主要操作在JdbcClientTokenServices.java類中, 更多的細節請參考該類.

oauth_access_token

oauth_refresh_token

在項目中,主要操作oauth_refresh_token表的對象是JdbcTokenStore.java. (與操作oauth_access_token表的對象 一樣);更多的細節請參考該類. 如果客戶端的grant_type不支持refresh_token,則不會使用該表.

oauth_code

在項目中,主要操作oauth_code表的對象是JdbcAuthorizationCodeServices.java. 更多的細節請參考該類。 只有當grant_type為"authorization_code"時,該表中才會有數據產生; 其他的grant_type沒有使用該表。

總結

以上是生活随笔為你收集整理的SpringSecurity OAuth2中表结构说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。