将通过securesocial保护的Play Framework休息呼叫暴露给移动应用

时间:2014-05-26 11:12:31

标签: rest playframework playframework-2.2 securesocial

我想将Play Framework REST调用暴露给我的播放应用以外的客户端。

我想要一个移动应用来拨打那些安全的休息电话。

我今年早些时候在SO上提出了一个问题并得到了答案,但这只适用于OAuth2而且我只使用OAuth1

我的问题是:

  1. 将我的Pl​​ayFramework应用上的Securesocial保护的REST调用暴露给移动应用等非Web客户端是一个好主意吗?
  2. 有没有办法使用Securesocial for OAuth1执行此操作?
  3. 除了上一个问题的链接中是否有任何示例?

2 个答案:

答案 0 :(得分:22)

master-SNAPSHOT中的最新更改包括LoginApi控制器,该控制器允许您使用API​​对用户进行身份验证。它支持UsernamePasswordProvider和所有OAuth2Providers。

对于UsernamePasswordProvider,您可以发布用户凭据,如果它们没问题,您将获得一个带有令牌的json,该令牌可以在X-Auth-Token标头中用于调用SecuredActions。例如:

curl --data "username=some@email.com&password=some_password” http://localhost:9000/auth/api/authenticate/userpass  

对于基于OAuth2的提供程序,您必须发布一个JSON,其中包含由外部服务(在客户端获取者)生成的accessToken以及用户电子邮件。该模块将使用accessToken来验证它是否有效,并将外部服务返回的电子邮件与传入的电子邮件进行比较。如果它们匹配,则认为用户已通过身份验证。这与FortyTwo的工作人员非常相似,我认为内置功能(http://eng.42go.com/mobile-auth-with-play-and-securesocial/)会很好。

例如,在客户端使用Facebook进行身份验证后,返回带有accessToken和expiresIn值的文件test.json :(例如:使用Javascript):

{
"email": “some@email.com”,
"info": {
    "accessToken": “an_access_token”,
    "expiresIn": a_number_with_expiration_in_seconds
 }
} 

您可以调用:

curl -v --header "Content-Type: application/json" --request POST --data-binary "@test.json" http://localhost:9000/auth/api/authenticate/facebook

上述任何调用的示例json响应都是:

{"token":"98b9613dac60890b8e0abf5bc0f77591523df4e6de50b085c832116b8db2cc65511e0de6780f6a49f8755eddabbd46e6afada92160758fd6d4bbb25dc57e0f7b1e4b5b59fbbe543cf80ad1b6d91de7764e3ac1aaa0afac0c312a47bf27258f455606c6c19b1a3d40f8631ce98e6b76e128dddcb29511eb81200ffe9de95cba7a","expiresOn":"2014-05-07T07:43:10.987-03:00"}

然后,您可以调用安全操作:

curl -v --header "Content-Type: application/json" -H "X-Auth-Token: 819a9cb9227d2c82af9c1ee2a62b9e7d35725e235e086ab95ecce0b509f3f7b389f430e217e341306ecaebfd1972ac083de73a32341a26f97150ae71fb0417f0031534d818356b2266ffc100e5ee6a50bd1f9ec76b0f68d2ff8ce4d196b4a86b61e002b29b00532ef166cb2eb8476d3ae008c112891628bc0f444c7512c01345" http://localhost:9000/my-protected-action 

答案 1 :(得分:2)

我建议使用Silhouetterepo)。 Silhouette的设计灵活。

Here你可以找到一个种子项目,使用Silhouette公开一个用于注册,唱歌和社交认证的休息api。