11、OAuth和OpenID服务
1、OAuth
1、1 簡(jiǎn)介
OAuth是發(fā)布受保護(hù)數(shù)據(jù)并與之交互的簡(jiǎn)單方法。對(duì)于人們來說,這也是一種更安全的訪問方式。例如,它可以用來訪問你的用戶在Twitter上的數(shù)據(jù)。Play僅提供對(duì)OAuth 1.0的支持。
1、2 基本工作原理
在build.sbt中添加配置:
libraryDependencies ++= Seq(
? javaWs
)
將應(yīng)用程序注冊(cè)到服務(wù)提供商,回調(diào)的URL必須正確,如果不匹配,服務(wù)提供商會(huì)拒絕調(diào)用。在本地工作時(shí),可以使用/etc/hosts在本地計(jì)算機(jī)上偽造域。服務(wù)提供商將為您提供:應(yīng)用程序標(biāo)識(shí)、秘密密鑰、請(qǐng)求令牌URL、訪問令牌URL、授權(quán)URL。
從服務(wù)器獲取請(qǐng)求令牌;將用戶重定向到服務(wù)提供商,在那里將授予您使用它應(yīng)用程序中數(shù)據(jù)的權(quán)限;服務(wù)提供商將重新定向用戶,為您提供一個(gè)/verifier/;使用該驗(yàn)證器,將/request-token/交換為/access-token/。現(xiàn)在擁有/access token/的用戶可以訪問任何訪問受保護(hù)的數(shù)據(jù)。
1、3 實(shí)例
實(shí)例資源文件Twitter .java
注意:OAuth不提供任何針對(duì)MITM攻擊的保護(hù)。
2、OpenID服務(wù)
2、1 簡(jiǎn)介
OpenID是一種協(xié)議,用戶可以使用一個(gè)帳戶訪問多個(gè)服務(wù)。作為一個(gè)Web開發(fā)人員,您可以使用OpenID為用戶提供一種登錄的方式。
2、2 OpenID服務(wù)
用戶提供一個(gè)他的OpenID(一個(gè)URL)到應(yīng)用服務(wù)器;服務(wù)器檢查URL后面的內(nèi)容,以生成需要重定向用戶的URL;用戶確認(rèn)了其OpenID提供者的授權(quán),并被重定向回應(yīng)用服務(wù)器;應(yīng)用服務(wù)器接收來自該重定向的信息,并向檢查信息是否正確。
2、3 使用OpenID
首先需要在build.sbt中添加依賴:
libraryDependencies ++= Seq(
? openId
)
使用OpenID時(shí)需要依賴OpenIdClient 類
兩個(gè)重要的api:
OpenIdClient.redirectUrl:計(jì)算應(yīng)該重定向用戶的URL。它涉及異步獲取用戶的OpenID頁(yè)面,這就是它返回completionStage<string>的原因。如果openID無效,則返回的completionStage將完成,但出現(xiàn)異常。
openidclient.verifiedid檢查當(dāng)前建立用戶信息的請(qǐng)求,包括其已驗(yàn)證的openid。它將異步調(diào)用OpenID服務(wù)器以檢查信息的真實(shí)性,并返回用戶信息的承諾。如果信息不正確或服務(wù)器檢查為假(例如,如果重定向URL是偽造的),則返回的CompletionStage將完成,但會(huì)出現(xiàn)異常。
使用示例在資源文件WS.java文件中
2、4 擴(kuò)展屬性
可以從OpenID服務(wù)器請(qǐng)求可選屬性和/或必需屬性。請(qǐng)求所需的屬性意味著如果用戶不提供這些屬性,則無法登錄到您的服務(wù)。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的11、OAuth和OpenID服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 219 元,小米推出米家电动剃须刀 S3
- 下一篇: 12、play整合Akka