我正在使用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
我目前对安全应该如何运作的理解:
我是否可以从移动应用程序向我使用Play创建的Web应用程序发出HTTP请求!框架,同时保持安全?
我是否错误地接近了整个情况?
这是第一次播放!我创建的应用程序,这是我第一次使用Heroku。我并不太远,如果它更容易/更有效/更适合解决这个问题,我会反对改用其他东西。
编辑:另外,在Play!的YABE教程中,似乎他们用纯文本检查密码。从一般的角度来看,这不是一个安全问题吗?
编辑2:我查看了OAuth提供商信息,似乎解决了这个问题。我唯一担心的是v2.0已知安全漏洞,v1.0似乎很难实现,因为我需要的只是移动应用程序和Web应用程序之间的安全连接。如果我要让每个呼叫都需要SSL,我是否可以将每个Play方法仅仅作为参数使用用户名和密码并完全忽略OAuth?
答案 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):