安全玩!来自外部申请

时间:2013-03-09 19:56:43

标签: java security heroku playframework

我正在使用Play编写私有REST API!我将从移动应用程序拨打电话,我对如何保证其安全感到困惑。

在Play!的文档中使用Yet Another Blog Engine示例时,我使用了authentication example,并处理了通过浏览器登录的问题。根据我对Play!的安全模块的理解,它有助于浏览器会话。此外,我看到的每个StackOverflow问题都涉及到Web上的管理模块,问题也与会话有关。

Does the Play! framework have any built in mechanism to prevent session hijacking?

Enforce Https routing for login with play framework

我目前对安全应该如何运作的理解:

  • 移动应用“登录”到网络应用并获取某种令牌
  • 每次后续调用时,令牌都会附加到API调用的末尾
  • 如果移动用户“退出”或令牌过期,则网络应用会移除令牌
  • 每个API调用都使用HTTPS以保持安全性

我是否可以从移动应用程序向我使用Play创建的Web应用程序发出HTTP请求!框架,同时保持安全?

我是否错误地接近了整个情况?

这是第一次播放!我创建的应用程序,这是我第一次使用Heroku。我并不太远,如果它更容易/更有效/更适合解决这个问题,我会反对改用其他东西。

编辑:另外,在Play!的YABE教程中,似乎他们用纯文本检查密码。从一般的角度来看,这不是一个安全问题吗?

编辑2:我查看了OAuth提供商信息,似乎解决了这个问题。我唯一担心的是v2.0已知安全漏洞,v1.0似乎很难实现,因为我需要的只是移动应用程序和Web应用程序之间的安全连接。如果我要让每个呼叫都需要SSL,我是否可以将每个Play方法仅仅作为参数使用用户名和密码并完全忽略OAuth?

1 个答案:

答案 0 :(得分:2)

使用像OAuth这样的授权框架,您可以通过Web应用程序对移动应用程序进行授权。这允许Web应用程序让用户登录然后向移动应用程序发出访问令牌以向该用户发出请求,而移动应用程序不必处理用户的密码。

查看Play的OAuth 提供程序模块。如果您使用Google,则可能会找到适用于Play的OAuth 客户端模块,但该模块适用于OAuth的另一方,允许您的网络应用授权针对第三方提供商。然后,您可以在移动应用中使用OAuth客户端库来处理获取访问令牌。

它甚至可以是OAuth的通用Java库 - Play 2.0 documentation for OAuth表示它没有提供OAuth 2.0模块,因为它很简单甚至不需要库。但是有a few Java libraries available

这是一个项目,其中有人将一些OAuth提供商的东西放在Play中(引自this forum post):

https://github.com/mashup-fm/playframework-oauthprovider