黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

OpenID 和 OAuth 的區(qū)別及第三方登錄的安全隱患

系統(tǒng) 2784 0

不知道什么時(shí)候開始,我們已經(jīng)習(xí)慣了點(diǎn)擊“用XX帳號(hào)登錄”或者 "Login with XX" 來訪問網(wǎng)站,但是大多數(shù)人可能都不知道這背后涉及的事有多復(fù)雜。

?

OpenID 和OAuth 完全是為了兩種不同的需求而生

OpenID 的目標(biāo)是為了幫助網(wǎng)站確認(rèn)一個(gè)用戶的身份 OAuth 的目標(biāo)是為了授權(quán)第三方在可控范圍下訪問用戶資源

?

OpenID 是怎么認(rèn)證用戶的?

一個(gè)網(wǎng)站如果想要接入 OpenID 認(rèn)證是非常簡(jiǎn)單的,不需要?jiǎng)?chuàng)建應(yīng)用,不需要 App Key ,不需要 Secret ,只需要將用戶導(dǎo)向 OpenID Provider 的 Entry 并帶上 Callback ,用戶只要同意提供信息,你就可以拿到這個(gè)用戶的“唯一標(biāo)識(shí)”。

請(qǐng)注意這里我使用了“唯一標(biāo)識(shí)”這種說法,因?yàn)閷?duì)于網(wǎng)站來說,OpenID Provider 提供的既不是用戶的 UID ,也不是用戶的 E-Mail ,比如 Google 在默認(rèn)情況下提供的就是一個(gè)幾十位長(zhǎng)的字符串,這個(gè)字符串是隨機(jī)生成的,第三方網(wǎng)站無法從中獲得用戶的任何私人信息。這么說可能很抽象,舉個(gè)例子:

比如我用 Google 的 OpenID 服務(wù)登錄 example.com , example.com 先把我導(dǎo)向 Google 的授權(quán)頁(yè)面,我使用 Google 帳號(hào) test@gmail.com 登錄并同意后,頁(yè)面跳回 example.com example.com 拿到了我的“唯一標(biāo)識(shí)”,這個(gè)唯一標(biāo)識(shí)可能是 cd5f2126c2b2f97ca2d446e52c6ff4baea56fd4bcfcea30afcaaf6b73bcb04a1 example.com 從這個(gè)字符串里無法獲得任何 test@gmail.com 的個(gè)人信息(甚至連郵箱地址也不知道), example.com 只知道以后只要使用谷歌登錄并返回 cd5f2126c2b2f97ca2d446e52c6ff4baea56fd4bcfcea30afcaaf6b73bcb04a1 這個(gè)標(biāo)識(shí)符,那就是我在登錄。

顯而易見,OpenID 是專為登錄認(rèn)證而生,它使用簡(jiǎn)單,門檻很低,但是如果你想在認(rèn)證過程中獲得用戶的其他信息(比如 E-Mail )就得多做一步了。

?

如何在 OpenID 認(rèn)證的過程中獲得用戶的部分信息?

傳統(tǒng)的 OpenID 是做不到這一點(diǎn)的,你只能拿到“唯一標(biāo)識(shí)”。不過新版的 OpenID 引入了 " OpenID attribute exchange " 這個(gè)概念,這樣第三方可以在用戶的許可范圍內(nèi)獲得用戶的部分具體信息。

還是上面的例子,如果 example.com 告訴 Google ,我想知道這個(gè)用戶的 E-Mail 地址,谷歌就會(huì)在授權(quán)頁(yè)面告訴用戶:“example.com 想要你的 E-Mail 地址”,這時(shí)如果用戶點(diǎn)擊同意, example.com 就能在回調(diào)請(qǐng)求中拿到 test@gmail.com 這個(gè)地址。

對(duì)于網(wǎng)站能拿到的信息,不同 Provider 有不同的規(guī)定,一般來說包括

aim, blog, country, dob (date of birth), email, fullname, gender, icq, image, jabber, language, msn, nickname, phone, postcode, skype, timezone, website, yahoo

等等。

?

那么,OAuth 又是怎么認(rèn)證用戶的?

與 OpenID 相比,網(wǎng)站想接入 OAuth 要稍微麻煩點(diǎn),網(wǎng)站需要先創(chuàng)建應(yīng)用,拿到 Key 和 Secret ,才能接入 Provider 。

OAuth 的授權(quán)過程并不是身份認(rèn)證的過程,這一點(diǎn)需要特別清楚,網(wǎng)站走完OAuth 流程并拿到用戶的授權(quán) token 后還需要通過 token 調(diào)用相應(yīng)的用戶信息接口才能獲得“唯一標(biāo)識(shí)”,舉個(gè)例子:

我想通過新浪微博登錄 example.com example.com 要先把我 redirect 到新浪微博的授權(quán)頁(yè)面,我通過微博帳號(hào)登錄并授權(quán)后,頁(yè)面跳回 example.com example.com 拿到我的訪問 token 后還要再調(diào)用一個(gè)接口來獲得我的新浪會(huì)員 UID ,這個(gè) UID 就是新浪用戶的“唯一標(biāo)識(shí)”了。

可以看出,OAuth 相對(duì)于 OpenID 最大的區(qū)別就是,網(wǎng)站實(shí)際上是拿到了你的帳戶訪問權(quán)限繼而確認(rèn)你的身份,這是一個(gè)安全隱患,因?yàn)榫W(wǎng)站在拿到你的“唯一標(biāo)識(shí)”的同時(shí)還拿到了一把你的賬戶的 “臨時(shí)鑰匙”。至于網(wǎng)站會(huì)不會(huì)拿這把鑰匙“干壞事”,這個(gè)只有站長(zhǎng)心里清楚。同時(shí) OAuth 還比 OpenID 多了幾個(gè)額外的請(qǐng)求步驟,登錄所費(fèi)時(shí)間一定是長(zhǎng)于 OpenID 的。

大多數(shù)的網(wǎng)民是沒有這種意識(shí)的,他們對(duì)“通過XX登錄”的認(rèn)證過程中的提示早已視而不見:

有多少人真正注意過左邊的文字?

豆瓣寫的更清楚,XXX應(yīng)用“希望操作你在豆瓣上的數(shù)據(jù)”而不是“希望使用你的豆瓣賬號(hào)來登錄XXX”

?

國(guó)內(nèi)外主要服務(wù)商認(rèn)證方式對(duì)比

提供商 認(rèn)證方式 認(rèn)證后網(wǎng)站獲得的權(quán)限 安全程度
Google OpenID + OAuth 如果使用OpenID,網(wǎng)站無法獲得任何額外權(quán)限(包括獲得你的Google賬戶名稱),如果使用OAuth,網(wǎng)站須明確說明需要訪問哪些服務(wù)的權(quán)限并經(jīng)過用戶逐項(xiàng)同意
Facebook OAuth 默認(rèn)授權(quán)情況下只能讀取你的公開信息(不包含E-Mail地址),如果網(wǎng)站需要更高級(jí)權(quán)限需要明確聲明并經(jīng)過用戶逐項(xiàng)同意
QQ空間 OAuth 默認(rèn)授權(quán)情況下只能讀取你的公開信息(不包含QQ號(hào)),如果網(wǎng)站需要更高級(jí)權(quán)限需要明確聲明并經(jīng)過用戶逐項(xiàng)同意
新浪微博 OAuth 默認(rèn)授權(quán)情況下可以獲得你的所有信息(私信及身份證號(hào)、姓名等除外),并可以你的身份操作絕大多數(shù)微博功能
Windows Live OAuth 默認(rèn)授權(quán)情況下只能讀取你的“唯一標(biāo)識(shí)”,如果網(wǎng)站需要更高級(jí)權(quán)限需要明確聲明并經(jīng)過用戶逐項(xiàng)同意,默認(rèn)情況下基本類似于OpenID
騰訊微博 OpenID + OAuth 如果使用OpenID,網(wǎng)站無法獲得任何額外權(quán)限,如果使用OAuth,默認(rèn)會(huì)獲得用戶所有操作的權(quán)限,除非應(yīng)用明確聲明只需要部分權(quán)限 使用OpenID時(shí), 使用OAuth時(shí),
搜狐微博 OAuth 默認(rèn)授權(quán)情況下可以獲得你的絕大多數(shù)信息,并可以你的身份操作絕大多數(shù)微博功能
網(wǎng)易微博 OAuth 默認(rèn)授權(quán)情況下可以獲得你的絕大多數(shù)信息,并可以你的身份操作絕大多數(shù)微博功能
百度 OAuth 默認(rèn)授權(quán)情況下只能讀取你的公開信息(UID、百度帳戶名),如果網(wǎng)站需要更高級(jí)權(quán)限需要明確聲明并經(jīng)過用戶逐項(xiàng)同意
人人 OAuth 默認(rèn)授權(quán)情況下只能讀取你的公開信息(UID、好友關(guān)系等),如果網(wǎng)站需要更高級(jí)權(quán)限需要明確聲明并經(jīng)過用戶逐項(xiàng)同意
開心網(wǎng) OAuth 默認(rèn)授權(quán)情況下只能讀取你的公開信息,如果網(wǎng)站需要更高級(jí)權(quán)限需要明確聲明并經(jīng)過用戶逐項(xiàng)同意

?

總結(jié)

總體來說,國(guó)外的網(wǎng)站都比較正規(guī),第三方網(wǎng)站幾乎無法獲得任何私人信息,而國(guó)內(nèi)網(wǎng)站對(duì)個(gè)人信息的保護(hù)水平高低不齊,某些網(wǎng)站甚至沒有任何保護(hù),新浪微博等網(wǎng)站的“第三方接入”,用一句話來說,不管你敢不敢用,我反正是不敢用。

?

原文: https://www.idndx.com/2012/04/23/openid-vs-oauth-and-the-security-risk-of-oauth-login/

?

?

?

OpenID 和 OAuth 的區(qū)別及第三方登錄的安全隱患分析


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論