1、OAuth
1、1 简介
OAuth是发布受保护数据并与之交互的简单方法。对于人们来说,这也是一种更安全的访问方式。例如,它可以用来访问你的用户在Twitter上的数据。Play仅提供对OAuth 1.0的支持。
1、2 基本工作原理
在build.sbt中添加配置:
libraryDependencies ++= Seq(
javaWs
)
将应用程序注册到服务提供商,回调的URL必须正确,如果不匹配,服务提供商会拒绝调用。在本地工作时,可以使用/etc/hosts在本地计算机上伪造域。服务提供商将为您提供:应用程序标识、秘密密钥、请求令牌URL、访问令牌URL、授权URL。
从服务器获取请求令牌;将用户重定向到服务提供商,在那里将授予您使用它应用程序中数据的权限;服务提供商将重新定向用户,为您提供一个/verifier/;使用该验证器,将/request-token/交换为/access-token/。现在拥有/access token/的用户可以访问任何访问受保护的数据。
1、3 实例
实例资源文件Twitter .java
注意:OAuth不提供任何针对MITM攻击的保护。
2、OpenID服务
2、1 简介
OpenID是一种协议,用户可以使用一个帐户访问多个服务。作为一个Web开发人员,您可以使用OpenID为用户提供一种登录的方式。
2、2 OpenID服务
用户提供一个他的OpenID(一个URL)到应用服务器;服务器检查URL后面的内容,以生成需要重定向用户的URL;用户确认了其OpenID提供者的授权,并被重定向回应用服务器;应用服务器接收来自该重定向的信息,并向检查信息是否正确。
2、3 使用OpenID
首先需要在build.sbt中添加依赖:
libraryDependencies ++= Seq(
openId
)
使用OpenID时需要依赖OpenIdClient 类
两个重要的api:
OpenIdClient.redirectUrl:计算应该重定向用户的URL。它涉及异步获取用户的OpenID页面,这就是它返回completionStage<string>的原因。如果openID无效,则返回的completionStage将完成,但出现异常。
openidclient.verifiedid检查当前建立用户信息的请求,包括其已验证的openid。它将异步调用OpenID服务器以检查信息的真实性,并返回用户信息的承诺。如果信息不正确或服务器检查为假(例如,如果重定向URL是伪造的),则返回的CompletionStage将完成,但会出现异常。
使用示例在资源文件WS.java文件中
2、4 扩展属性
可以从OpenID服务器请求可选属性和/或必需属性。请求所需的属性意味着如果用户不提供这些属性,则无法登录到您的服务。