在Play框架和OAuth2上保护REST API

Mar*_*rco 41 scala oauth oauth-2.0 playframework playframework-2.0

我正在使用Play 2.0Scala开发一个暴露一些REST API 的应用程序.这些API将由不同的应用程序,Web,移动或桌面使用,因此OAuth协议(OAuth2)似乎是最合适的.

此外,我最初会使用外部OAuth提供商,如Facebook.

我的问题是:授权单个REST调用的确切流程是什么?对于每次通话,我应该在服务器端期望什么以及我应该与外部提供商检查什么?

使用OAuth1我知道客户端发送了带有所有签名请求的令牌,但是我认为不是这样,我想如果签名没有签名是不可信的,因此我不认为这是流程.

Rak*_*ela 17

您可以使用名为SecureSocial的模块.

https://github.com/jaliss/securesocial/

这个非常精致,Play社区中的许多人似乎都意识到/正在使用这个模块.

授权可能很有用. https://github.com/schaloner/deadbolt-2/

对于端到端scala的东西, https://github.com/t2v/play20-auth

  • 为什么这个答案已经被授予,因为它不是答案? (14认同)
  • 我相信问题是如何使用play框架开发自己的Oauth2提供程序,而不是与第三方Oauth2提供程序集成. (6认同)

小智 16

我将Apache Amber移植到Play2 Scala,这里是链接:https: //github.com/cleanyong/oauth2play2scala

移植Apache Amber的原因是:

  1. 它经过测试
  2. 比自制更好
  3. 它适合Play2 Scala API
  4. 使用方便
  5. 不打扰

如果要在站点上设置oauth2服务器,可以尝试使用我的端口.它有文件.


nde*_*rge 7

基本上,标准流程如下:

  1. 在每个请求上,如果它包含id,请检入cookie(Play!方言中的"session")
  2. 如果没有,请要求用户向提供商(Facebook或其他)进行身份验证
  3. 如果没问题,提供程序将返回一个id,将此id保存在持久性系统(注册)和当前cookie/session中
  4. 在下一个请求中,检查cookie/session中是否存在id,并且对应于持久性系统中的现有用户
  5. 要"注销",只需清除cookie /会话即可

如果您想了解更多细节,请询问:-)