国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

使用鉤子促進(jìn)OAth 2.0與OpenID連接

譯文
開發(fā) 開發(fā)工具 前端
作為開發(fā)人員,您一定聽說過OAuth 2.0和OpenID Connect(OIDC)吧?它們是用于向Web應(yīng)用程序添加身份驗證和授權(quán)的兩款強(qiáng)大工具。本文將向您展示如何使用Okta的新型內(nèi)聯(lián)鉤子,將信息傳遞到那些通過OIDC和OAuth獲得的令牌中。

【51CTO.com快譯】作為開發(fā)人員,您一定聽說過OAuth 2.0和OpenID Connect(OIDC)吧?它們是用于向Web應(yīng)用程序添加身份驗證和授權(quán)的兩款強(qiáng)大工具。

本文將向您展示如何使用Okta的新型內(nèi)聯(lián)鉤子(請參見:https://developer.okta.com/docs/reference/api/inline-hooks/)將信息傳遞到那些通過OIDC和OAuth獲得的令牌中。

首先,您將在Okta中設(shè)置OIDC應(yīng)用程序,以查看返回的令牌類型。然后,您將配置一個Spring Boot API應(yīng)用。通過各種API端點,您可以向Okta注冊令牌鉤子,并服務(wù)于Okta的令牌patch請求。在操作完成的時候,由于注冊了鉤子,您會發(fā)現(xiàn)有效載荷中的令牌。

在和本文一起動手實踐之前,請您事先設(shè)置好以下內(nèi)容:

下面,讓我們再來了解一下OIDC和OAuth的相關(guān)概念。

使用OAuth 2.0進(jìn)行委托授權(quán)

讓我們假想一個場景:諸如Yelp(譯者注:美國最大的點評網(wǎng)站)之類的客戶端應(yīng)用從諸如Google之類的認(rèn)證服務(wù)中請求訪問令牌。您作為資源所有者使用自己的憑據(jù)登錄Google,并將您的同意授予Yelp,以便其僅訪問自己的聯(lián)系人。因此,Yelp擁有了訪問令牌,可以通過Google的Contacts API請求資源服務(wù)器,以獲取您的聯(lián)系人信息。在此過程中,Yelp永遠(yuǎn)不會看到您的密碼,也永遠(yuǎn)不會訪問超出您同意范圍之外的內(nèi)容。并且,您可以隨時撤回自己的同意。

使用OpenID Connect進(jìn)行身份識別

在這個同意和授權(quán)環(huán)節(jié)中,您可以注意到它只缺少一樣?xùn)|西:身份。我們需要引入新的令牌:身份令牌,通過在OAuth 2.0之上的一層--OpenID Connect(OIDC),來驗證用戶的身份信息,并且以JWT(https://developer.okta.com/docs/api/resources/oidc#access-token)格式被編碼到經(jīng)由密碼簽名的令牌之中。這樣既保證了互操作性,又實現(xiàn)了單點登錄(Single Sign On)。

OAuth、以及OIDC擴(kuò)展使用各種已定義的流(Flows)來管理客戶端應(yīng)用、認(rèn)證服務(wù)器、以及資源服務(wù)器之間的交互。如下面的流程所示,我們將重點關(guān)注瀏覽器中的認(rèn)證代碼流(Authorization Code Flow):

  1. 為了訪問您的聯(lián)系人,Yelp通過一個按鈕來鏈接到您的Google通訊錄上。
  2. 在單擊該按鈕后,您將被重定向到Google處,以使用自己的用戶名和密碼登錄。
  3. Google通過顯示告知您Yelp希望以只讀的方式訪問您的聯(lián)系人。
  4. 一旦您點擊同意,Google就會通過瀏覽器使用臨時代碼(稱為授權(quán)代碼)重定向回Yelp。
  5. Yelp使用該代碼與Google交換訪問令牌。
  6. 在完成所有的代碼驗證之后,Google會向Yelp頒發(fā)功能有限(僅對您的聯(lián)系人有只讀的訪問權(quán)限)的訪問令牌。
  7. Yelp將訪問令牌提供給Google Contacts API。
  8. Google Contacts API驗證該令牌,如果Yelp的請求與令牌標(biāo)識的功能相匹配,您的聯(lián)系人列表則會被返回給Yelp。

為OIDC和OAuth 2.0設(shè)置Okta Org

下面,您將在Okta中創(chuàng)建一個OpenID Connect應(yīng)用。

在登錄到Okta org后,您可以根據(jù)頂層菜單導(dǎo)航至“應(yīng)用程序”,單擊“添加應(yīng)用”,單擊標(biāo)簽為Web的第三個框,然后單擊下一步。

最后單擊完成。

在Heroku上的OIDC

為了執(zhí)行各種可用的流程,我創(chuàng)建了一個OIDC playground應(yīng)用。

在登錄到https://okta-oidc-fun.herokuapp.com后,您會看到一個帶有表單和一些切換按鈕的頁面。它默認(rèn)指向的是我的Okta org。當(dāng)然,您可以通過如下表格將其更改為自己的Okta org。

通過向下滾動并單擊鏈接,您可以啟動一個新選項卡,并在其中向Okta org進(jìn)行身份驗證。然后,您將會被重定向回ID令牌和訪問令牌的位置。而通過單擊“驗證ID令牌”,您將可以看到有效載荷已經(jīng)被編碼到了該令牌之中。

至此,您已經(jīng)了解了Okta中的OpenID Connect應(yīng)用是如何生成各種令牌的。下面,我們將討論如何創(chuàng)建一個將自定義聲明添加到ID令牌的鉤子。由于是發(fā)生在對ID令牌進(jìn)行簽名之前,因此您仍然可以安全地對密碼簽名進(jìn)行驗證。

設(shè)置Favorite Beers API

請從GitHub上獲取本例的源代碼--https://github.com/oktadeveloper/okta-token-hooks-example

這是一個Spring Boot類型的應(yīng)用,它使用Okta Spring Boot Starter,來輕松與OpenID Connect和OAuth 2.0相集成。它使用H2(https://www.h2database.com/html/main.html)內(nèi)存嵌入式數(shù)據(jù)庫和Spring Data JPA(https://spring.io/projects/spring-data-jpa)進(jìn)行簡單的對象關(guān)系映射,以及Lombok(https://projectlombok.org/)項目。該應(yīng)用程序指向您的Favorite Beers API,以及一個用于處理Okta傳入的鉤子請求,并返回ID令牌。

在src/main/resources文件夾中,您將看到application.sample.yml文件。您可以通過復(fù)制,由它在同一文件夾中產(chǎn)生application.yml文件。接著根據(jù)上述提到的設(shè)置,自定義application.yml文件的內(nèi)容,其中包括:issuer、clientId和clientSecret的值。同時,您也可以將id和password值更改為任何其他值。完成這些設(shè)置之后,您可以如下命令運(yùn)行應(yīng)用程序:

注意:您需要Java 11或更高的版本,才能運(yùn)行該示例。如果您使用的是Mac,則建議您使用SDKMAN(https://sdkman.io/),來管理Java版本。

操作Beer應(yīng)用

在應(yīng)用啟動之后,您將看到如下輸出,它表明H2內(nèi)存數(shù)據(jù)庫里已填充了“啤酒”。

現(xiàn)在,您可以使用Beers API來添加自己喜歡的啤酒。不過,所有API端點都受到了OIDC的保護(hù)。請執(zhí)行如下命令,將啤酒添加到收藏夾列表之中:

如果一切順利,您將得到如下響應(yīng):

至此,您已經(jīng)為該應(yīng)用程序都創(chuàng)建了一個新的啤酒條目,并將其添加到了自己的收藏夾列表中。

注意:由于該應(yīng)用程序使用的是內(nèi)存數(shù)據(jù)庫,因此如果重新啟動該應(yīng)用的話,則需要使用此API重新添加自己喜愛的啤酒。

下面,我們將設(shè)置一個內(nèi)聯(lián)鉤子,將beers聲明添加到自己的ID令牌中。

從ID令牌中獲取喜愛的啤酒

為了利用鉤子來處理API,Okta需要能夠通過公共互聯(lián)網(wǎng)來對其進(jìn)行調(diào)用。在現(xiàn)實生活中,您可以將應(yīng)用程序部署在某個地方并進(jìn)行設(shè)置,以方便Okta與之交互。而在此出于演示目的,我們將使用ngrok(https://ngrok.com/)服務(wù),來發(fā)送一個唯一的、可公共尋址的域,以連接到本地運(yùn)行的Spring Boot應(yīng)用上。請在單獨(dú)的終端上運(yùn)行如下命令:

您將看到如下輸出:

請復(fù)制其https鏈接(例如:我所看到的是https://e3fc9a95.ngrok.io),以備后續(xù)使用。

設(shè)置Okta內(nèi)聯(lián)鉤子

至此,可公開訪問的Spring Boot應(yīng)用已設(shè)置就緒,并可接收Okta的鉤子請求了。但是,我們的Okta org尚需進(jìn)行如下準(zhǔn)備:

首先,您需要向Okta注冊內(nèi)聯(lián)令牌鉤子。在Okta org的管理控制臺中,請依次進(jìn)入工作流->內(nèi)聯(lián)鉤子,單擊:添加內(nèi)聯(lián)鉤子->令牌。請在對應(yīng)的表單中輸入如下內(nèi)容,并點擊“保存”:

其中,Authentication field是Okta用來向鉤子提供身份驗證的標(biāo)頭。而Authentication secret則是在授權(quán)標(biāo)頭中發(fā)送的值。

注意:請在application.yml文件中找到身份驗證的密鑰值。如果鉤子ID和密碼值發(fā)生了改變,那么您需要重新計算基本的身份驗證字符串,并將該值反映在上面的設(shè)置中。

至此,我們已在自己的Okta org中創(chuàng)建了鉤子。如下圖所示,Spring Boot應(yīng)用是通過WebSecurityConfiguration.java在鉤子的端點上啟用基本身份驗證的:

基本身份驗證被用于/api/hooks/**端點上,而OAuth 2.0則用于其他所有內(nèi)容。

令牌轉(zhuǎn)換內(nèi)聯(lián)鉤子的剖析

在配置授權(quán)服務(wù)器使用鉤子之前,讓我們先看一下代碼的核心。如下代碼使用HooksController的方法,可以讓ID令牌用您最喜歡的啤酒列表進(jìn)行patch。

TokenHookRequest的類(class)利用Lombok和一些默認(rèn)的初始化,來確保您不會收到NullPointerException。

Okta會向控制器發(fā)送許多令牌鉤子的請求。在此,我們僅針對需要的內(nèi)容使用@JsonIgnoreProperties(ignoreUnknown = true)注釋。如您想了解完整的JSON請求示例,請參見--https://developer.okta.com/docs/reference/token-hook/#sample-json-payload-of-a-request

通過使用請求中的login值,該代碼將進(jìn)行數(shù)據(jù)庫查找,以檢索與關(guān)聯(lián)登錄的Person。此處Person的記錄是我們在將其添加到喜愛啤酒列表時被創(chuàng)建的。

同時,該代碼將設(shè)置TokenHookResponse,以便通過命令列表來patch ID令牌、并訪問aoken。其中,最關(guān)鍵的一行代碼是:

它將啤酒名稱列表添加到了beers聲明所附帶的回復(fù)之中。如下便是JSON響應(yīng):

而最后一步則是:配置您的授權(quán)服務(wù)器,以使用該鉤子。

將啤酒添加進(jìn)您的ID令牌

請在頂層菜單中依次點擊API->授權(quán)服務(wù)器->默認(rèn)->訪問策略,向下滾動并點擊“默認(rèn)策略規(guī)則”旁的鉛筆圖標(biāo)。接著您可以從“使用該內(nèi)聯(lián)鉤子(Use this inline hook)菜單中,選擇“Beers Hook”,并點擊“更新規(guī)則”。

只要您在瀏覽器中輸入localhost:4040,便可看到ngrok的監(jiān)視界面。

如果回到前面的OIDC playground,您可以關(guān)閉帶有ID令牌和訪問令牌的結(jié)果標(biāo)簽。通過再次點擊playground上的鏈接,以及“驗證ID令牌”按鈕,您將能夠看到beers聲明、以及已被添加到收藏夾中的任何啤酒。

通過切換回ngrok監(jiān)視選項卡,您可以看到Okta的請求和Spring Boot應(yīng)用的響應(yīng)。

總結(jié)

Okta Spring Boot Starter能夠使您通過幾行代碼、以及三個配置屬性,將Spring Boot應(yīng)用與Okta相集成。它不僅能夠讓Okta的OpenID Connect服務(wù)符合相關(guān)標(biāo)準(zhǔn),而且還能為您提供全面的單點登錄體驗。也就是說,同一用戶可以訪問許多不同的OIDC應(yīng)用,而每一個應(yīng)用都擁有自己的一套要求和配置。最后,請記住:OIDC不能夠獨(dú)立運(yùn)行,它需要運(yùn)行在OAuth 2.0之上。OAuth僅專注于授權(quán),而OIDC則添加了身份識別與驗證方面的服務(wù)。

原文標(biāo)題:Boost OAuth 2.0 and OpenID Connect Using Hooks,作者:Micah Silverman

【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2014-05-30 12:47:19

醫(yī)療

2016-07-20 11:40:00

云計算

2021-03-28 09:17:18

JVM場景鉤子函數(shù)

2009-04-18 11:14:24

WLANVoIP通信

2023-10-19 10:24:47

2023-06-12 10:21:50

物聯(lián)網(wǎng)IoT

2020-12-22 14:33:25

區(qū)塊鏈行業(yè)發(fā)展物聯(lián)網(wǎng)

2014-11-11 10:44:19

華為存儲

2016-06-12 11:53:27

2012-06-12 09:21:53

JavaScript

2009-12-23 14:59:32

ADO.NET 2.0

2017-02-16 14:29:19

聯(lián)想

2017-09-29 22:24:03

云計算邊緣計算數(shù)據(jù)中心

2025-02-14 08:00:00

人工智能Gemini 2.0LLM

2016-06-03 10:21:05

2020-11-19 08:00:00

Kubernetes工具開發(fā)

2017-03-16 16:06:19

SDNNFV網(wǎng)絡(luò)

2018-06-20 15:33:44

Spring BootJava 9JDK

2016-08-22 21:41:37

LXDLinux容器管理器
點贊
收藏

51CTO技術(shù)棧公眾號

国产三级香港三韩国三级| 国产美女福利在线观看| 亚洲国产精品t66y| 欧美激情国产精品日韩| www国产成人免费观看视频 深夜成人网| 欧美亚洲精品一区二区| 欧美国产精品v| 香蕉97视频观看在线观看| 欧美久久一二区| 欧美xxxxxx| 欧美精品18videos性欧| 欧美电影一区| 亚洲午夜精品国产| 久久久久久久网| 污香蕉视频在线观看| 精品国产乱码91久久久久久网站| 欧美xxxx网站| 国产欧美精品在线| 男人操女人的视频在线观看欧美 | 成人午夜视频免费在线观看| 一区二区三区中文字幕在线观看| 91社区在线观看播放| 亚洲色图色老头| 国产毛片一区二区三区| 欧美精品一区二区三区久久| 91麻豆高清视频| 天堂а在线中文在线无限看推荐| 日韩黄在线观看| 蜜桃一区二区| 男人天堂成人网| 亚洲成av人影院| 国精产品一区二区三区有限公司| 国产免费一区二区三区在线观看 | 日本电影一区二区三区| 久久久91精品国产一区二区三区| 可以在线观看的av网站| 中文字幕亚洲欧美| 久久久人成影片免费观看| 黄色a级在线观看| 一区二区三区欧美在线观看| 久草在线资源站资源站| 热久久视久久精品18亚洲精品| 三级不卡在线观看| aaaaa毛片| 亚洲欧洲偷拍精品| 欧美成人一区二免费视频软件| 日韩欧美国产免费| 欧美一级生活片| 国产精品嫩草影院在线看| 国产又爽又黄ai换脸| 性做久久久久久免费观看| 久久精品xxxxx| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 成熟老妇女视频| 6080日韩午夜伦伦午夜伦| 色婷婷狠狠五月综合天色拍 | 色97色成人| 久久无码高潮喷水| 精品乱码亚洲一区二区不卡| 久久福利综合| 色播五月综合网| 在线a欧美视频| 久久亚洲影院| 国产成人天天5g影院在线观看| 国内精品小视频| 国产99久久久国产精品潘金| 在线xxxx| 黑人巨大精品欧美一区二区小视频| 亚洲视频中文字幕| 精品视频在线播放一区二区三区 | 国产美女直播视频一区| 国产日韩高清在线| 亚洲www免费| 亚洲国产一区二区在线| 欧美日韩一区中文字幕| 91精品国产91久久久久久密臀| 4hu永久免费入口| 欧美激情女人20p| 99在线视频精品| 色戒汤唯在线观看| 亚洲欧洲一区二区福利| 欧美日韩成人高清| 亚洲看片免费| 日本欧美在线视频免费观看| y111111国产精品久久婷婷| 欧美日韩视频在线| 欧美国产一区二区三区激情无套| 成人网免费看| 琪琪亚洲精品午夜在线| 国产精品久久毛片av大全日韩| 亚洲视频国产精品| 久久精品午夜福利| 欧美黑人又粗大| 国产精品美女一区二区| 清纯唯美亚洲经典中文字幕| www亚洲天堂| 国产精品久久久久aaaa九色| 午夜视频在线观看一区二区三区| 欧美岛国激情| 在线激情网站| 色中色综合成人| 亚洲视频自拍偷拍| 99re视频精品| 久久这里只有精品一区二区| 黄色激情网站| 91欧美精品成人综合在线观看| 欧美性生活一区| 蜜桃av一区二区三区| 日韩和的一区二在线| 人妻丰满熟妇av无码区app| 欧美怡红院视频一区二区三区| 一区二区三区在线观看网站| 成人午夜av| 秋霞影院午夜丰满少妇在线视频| 日韩av图片| 最近免费中文字幕视频2019| 久久久久9999亚洲精品| 婷婷精品在线观看| 精品福利视频导航大全| 日韩av电影免费在线观看| 在线观看日韩av| 亚洲少妇屁股交4| 国产精品v欧美精品v日本精品动漫| 97超碰在线公开在线看免费| 国产资源在线免费观看| 欧美一级在线播放| 欧美三级电影网站| 国产精品99久| 成人搞黄视频| 成人免费在线观看| 喜爱夜蒲2在线| 日本免费一区二区三区视频观看| 欧美日韩美少妇| bt欧美亚洲午夜电影天堂| 久久不见久久见免费视频7| 快射av在线播放一区| 5月婷婷6月丁香| 51国产成人精品午夜福中文下载| 亚洲精品国产综合区久久久久久久| 久久精品亚洲麻豆av一区二区| 日韩一区二区三区免费播放| 欧美1—12sexvideos| 天天干天天草天天| 国产亚洲情侣一区二区无| 中文字幕日韩欧美| 精品久久久一区| 夫妻av一区二区| 91av精品| 电影一区中文字幕| 91短视频版在线观看www免费| www.浪潮av.com| 国产综合第一页| 欧美日本亚洲视频| 欧美久久婷婷综合色| 国产欧美日韩在线| 男人的天堂亚洲在线| 黄色欧美网站| 超碰高清在线| 在线视频国产三级| 91亚洲精品国产| 91视频免费网站| 精品国产拍在线观看| 欧美日韩在线不卡| 国产视频一区在线播放| 亚洲女人天堂av| 亚洲欧美精品在线| 久久最新资源网| 国产成人精品视频免费看| 亚洲精品色婷婷福利天堂| 国产免费观看久久| 老司机午夜精品视频| 亚洲精品推荐| 最新日韩三级| 国产黄在线观看免费观看不卡| 日韩毛片在线免费看| 欧美日韩在线播放一区二区| 欧美中文字幕在线观看| 亚洲最新av在线| 3d成人h动漫网站入口| 亚洲男人都懂的| 成av人片一区二区| 久久亚洲欧洲| 欧美裸体在线版观看完整版| 亚洲成人高清| 国产后进白嫩翘臀在线观看视频 | 国产精品zjzjzj在线观看| 成人性生交大片免费看在线播放| fc2人成共享视频在线观看| 欧美黑人经典片免费观看 | 97av在线播放| 亚洲区免费影片| 欧美一区二区三区精品| 亚洲成av人片一区二区梦乃| 久久这里只有精品视频网| 久久激五月天综合精品| 在线欧美一区| 欧美成人69av| 亚洲深深色噜噜狠狠爱网站| 沈樵精品国产成av片| 日韩精品a在线观看91|