OpenID Connect 是什麼?|HENNGE Taiwan 部落格

文章推薦指數: 80 %
投票人數:10人

大家好,今天我們來淺談什麼是OpenID Connect。

在大家網購時常用的PChome 登入頁面,除了輸入PChome 自家帳號跟密碼的選項以外,也有一個快速登入的 ... OpenIDConnect是什麼? Jul7,2020 分享 大家好,今天我們來淺談什麼是OpenIDConnect。

雖然對這名詞本身可能不太熟悉,但我想大家在使用一些服務的時候,都有體驗過像下面這樣的一個登入方式。

https://ecvip.pchome.com.tw/login/v3/login.htm 在大家網購時常用的PChome登入頁面,除了輸入PChome自家帳號跟密碼的選項以外,也有一個快速登入的選項。

快速登入的選項中會有使用Google帳號登入、Apple帳號登入等等的選擇。

其實,像這樣可以讓使用者在其他平台上的帳號(以上面的例子來說是Google、Apple),登入到另外的服務上(以上面的例子來說是PChome),這件事情我們稱它為單一登入,英文會叫它Singlesign-on。

單一登入的實現方式有很多種,而OpenIDConnect就是能夠實作單一登入的技術之一。

在討論OpenIDConnect之前,不能避開的OAuth2.0 OpenIDConnect是OpenIDFoundation在2014年發布的OpenIDConnectCore1.0中定義的一個身分認證協議。

而它的設計理念是以當時就已被廣為使用的OAuth2.0的協議為基礎,再加上可以認證使用者的層次而成。

為什麼會採取這樣的方式呢?我們先來看看OAuth2.0的背景。

OAuth2.0(RFC6749)是IETF在2012年發布的一個為授權而設計的協議。

為什麼會需要「授權」呢?這跟近年來網際網路和雲端服務的起飛,並促使各項服務間連結需求的增加有很大的關係。

先讓我來舉一個簡單的例子。

現在有一個使用者,就假定是我自己本身。

我的行事曆資訊都放在我的GoogleCalendar上。

我現在想要使用一個可以做到比GoogleCalendar還要多功能的第三方行事曆服務。

這時候我就會想要讓這第三方行事曆服務得到我在GoogleCalendar上的行事曆資訊。

而如果是在一個只有帳號跟密碼的世界上,我就必須要把我的Google帳號和密碼告訴給這第三方服務行事曆服務,它才有辦法取得這些資訊。

但如果我把帳號密碼告訴了第三方,它可能就可以在暗地裡竊取行事曆以外的資訊,像是在Gmail裡的機密資訊。

這時候就出現了使用AccessToken來解決這個問題的協議,OAuth2.0。

*關於此途中的AccessToken的發放方式,為幫助理解細節有做簡化,敬請見諒。

AccessToken就像是一張兌換卷,每一張AccessToken上都有寫「誰」「對誰」「給予什麼樣的權限」,如此一來就可以在不告訴對方帳號密碼的情況下,給予對方最低限度需要的權限。

這就是為什麼OAuth2.0被稱為是一個授權的協議。

在OAuth2.0的世界中,我這個使用者被稱為ResourceOwner;第三方行事曆服務被稱之為Client;有放我行事曆資訊的GoogleCalendar稱為ResourceServer;幫忙發AccessToken的伺服器稱之為AuthorizationServer,在這例子中就會是Google。

從OAuth2.0到OpenIDConnect 但是解決了一個問題,新的問題就又跑出來了。

因為OAuth2.0的便利性,就出現了很多將OAuth2.0用為使用者登入驗證方式的服務。

但大家千萬不能忘記OAuth2.0只是一個定義如何使用AccessToken來授權的協議,內容是沒有提到如何去認證一個使用者的登入。

因此如果使用OAuth2.0做為使用者登入的認證機制,就會有很多意想不到的資安問題發生。

而再次的有人想出了一個在現有OAuth2.0的協議基礎下發放IDToken的方法來解決這個問題,這就是我們今天的主題所討論的OpenIDConnect。

重新介紹今天的主角--OpenIDConnect 因為OpenIDConnect是以OAuth2.0為基礎設計,因此使用方法上有很多的相似處。

角色也是其中一個,只是在OpenIDConnect中的Client有了一個新稱呼叫RelyingParty。

AuthorizationServer的新稱呼為OpenIDProvider,它除了可以發放AccessToken外,同時也可以發放IDToken。

OpenIDConnect的精華--IDToken OpenIDConnect中定義的IDToken採取了JWS(JSONWebSignature,RFC7515)的規格。

也因為採用了JWS,收到這IDToken的服務即可以透過它的數位簽章確保此使用者的身分的正確性。

我個人是將IDToken比喻為可以被驗證的一張名片。

比如說當Client順利得到IDToken時,它的外觀會長的像是 eyJraWQiOiIxZTlnZGs3IiwiYWxnIjoiUlMyNTYifQ.ewogImlzcyI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZfV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5NzAsCiAibmFtZSI6ICJKYW5lIERvZSIsCiAiZ2l2ZW5fbmFtZSI6ICJKYW5lIiwKICJmYW1pbHlfbmFtZSI6ICJEb2UiLAogImdlbmRlciI6ICJmZW1hbGUiLAogImJpcnRoZGF0ZSI6ICIwMDAwLTEwLTMxIiwKICJlbWFpbCI6ICJqYW5lZG9lQGV4YW1wbGUuY29tIiwKICJwaWN0dXJlIjogImh0dHA6Ly9leGFtcGxlLmNvbS9qYW5lZG9lL21lLmpwZyIKfQ.rHQjEmBqn9Jre0OLykYNnspA10Qql2rvx4FsD00jwlB0Sym4NzpgvPKsDjn_wMkHxcp6CilPcoKrWHcipR2iAjzLvDNAReF97zoJqq880ZD1bwY82JDauCXELVR9O6_B0w3K-E7yM2macAAgNCUwtik6SjoSUZRcf-O5lygIyLENx882p6MtmwaL1hd6qn5RZOQ0TLrOYu0532g9Exxcm-ChymrB4xLykpDj3lUivJt63eEGGN6DH5K6o33TcxkIjNrCD4XB1CKKumZvCedgHHF3IAK4dVEDSUoGlH9z4pP_eWYNXvqQOjGs-rDaQzUHl6cQQWNiDpWOl_lxXjQEvQ (此例參考了OpenIDConnectCore1.0中的例子。

) 乍看之下完全看不懂它在寫什麼,但是仔細一看會發現中間會有兩個「.」,它們可以將這整個IDToken分為三大部分。

去閱讀RFC7515,文件裡有說明JWS的構成是 BASE64URL(UTF8(JWSProtectedHeader))||'.'||BASE64URL(JWSPayload)||'.'||BASE64URL(JWSSignature) 我們就照他的意思將它們拆解後,用base64urldecode就可以得到像以下的內容。

Header IDToken的Header Payload IDToken的Payload Signature(是一個二進位的數據,用來驗證Header和Payload內容的完整性。

) 透過這樣的結構,Client就可以從Header裡得到的公鑰資訊和演算法資訊,驗證內容的IDToken內容的正確性,並將其驗證結果使用在使用者註冊及登入認證之上。

這就是OpenIDConnect的精華所在。

以上是OpenIDConnect的簡介。

結語 不管是哪一種單一登入的理念其實非常簡單。

對於使用者,使用單一登入的技術,就可以只要記住一組帳號密碼即登入所有已經串接好的服務;對於服務提供者,可以讓使用者不需要每次都重新輸入相同的註冊資訊,進而降低開始使用他們服務的門檻。

如此單一登入的技術帶給我了們強大的便利性,但同時也讓那一組帳號密碼的安全性更加受到注重。

如果是一家企業被要求的安全性等級就會比起個人使用時更加嚴謹、更加的嚴格。

大家不妨可以藉由這個機會,重新評估看看自己使用的帳號環境的安全性喔。

如果有任何問題,都歡迎在下方留言,或透過官網表單與我們聯繫。

喜歡這篇文章嗎?歡迎分享出去! 分享 WRITTENBY SeishoJo 回到HENNGETaiwan部落格首頁 SaaS如何適用於VUCA的時代 Dec3,2021 隨著近日人們的步調愈來愈緊促,我們也逐漸踏入VUCA的時代。

VUCA(Volatility、Uncertainty、Complexity、Ambiguity)分別代表波動性、不確定性、複雜性和模糊性。

SaaS是一種可以即時並簡單啟用的解決方案,甚至可以先從小規模開始採用。

也因為這樣的特性,SaaS服務是最適合這個VUCA時代的。

什麼是CASB?一起認識雲端資安代理 Nov15,2021 在愈來愈多企業選擇使用雲端系統的同時,「CASB」這個名詞除了也隨之更常出現在我們的生活當中外,它的重要性更是不容小覷。

到底什麼是CASB?就讓這篇文章帶您簡單快速的瞭解吧! 如何「正確地」犯錯? Nov5,2021 有一天我注意到--其實要「犯錯」是很難的。

因為要犯錯,人們就需要意識到什麼是「錯誤」。

如果一個人沒有認識到自己所犯的錯誤,對那個人而言就不是一個錯誤。

這就讓我產生了一個疑問,什麼是「錯誤」?錯誤就是一個我們不想要或無意造成的結果。

為了犯錯,應該提前建立期望或目標。

HENNGE,重視改變所帶來的力量 Oct22,2021 我們重視點燃變化的力量,我們認為不斷挑戰自己與時俱進的公司才能提供更好的產品及解決方案給消費者。

同時,我們也認為社會上若能充滿這些有創新思維的公司,定能使世界變成一個更美好的地方。

不斷地嘗試新解決方案找到其中遺漏的拼圖,並且努力挑戰開發出能夠填補漏洞的解決辦法。

我們稱這樣的行為作「品嚐未成熟的果實」。

後疫情時代--疫情警戒降二級社區人流趨勢報告顯示台灣逐漸恢復往日常態 Oct15,2021 指揮中心自7月27日將疫情警戒標準由三級調降至第二級。

根據Google所提供的COVID-19社區人流趨勢報告,民眾回到辦公室上班的人數相較基準日少了將近20%。

但可以看到人流有明顯移往辦公場所的趨勢。

而在工作場所上的人數幾乎等同於三級警戒前的程度。

雖然我們目前的生活暫時仍存在著許多限制,但我認為民眾開始再度感到安心。

用「ㄝ」破解所有Hotmail帳號--1999年的駭客攻擊事件 Oct8,2021 在電子郵件剛開始普及的年代,Hotmail曾一度席捲網路市場,備受許多使用者的愛用。

雖然已經不再是主流信箱,但相信Hotmail及MSN都承載著許多人的回憶,成了令人懷念的時代的眼淚。

但您知道Hotmail曾在1999年遭到大規模的駭客攻擊嗎?這次就讓我們來談談1999年驚動的科技業的攻擊事件。



請為這篇文章評分?