webservice身份验证和用户身份管理



我和我的团队目前正在进行一个相当大的项目。我们正在开发一款在线游戏,(目前)可以通过两种方式访问:-通过web浏览器、应用程序、完整的JavaScript(客户端)、完整的Ajax(基本上意味着UI将在JS客户端进行管理)。-通过iPhone应用程序(UI将由应用程序本身管理)。

在两个不同的应用程序之间,核心逻辑保持不变,所以我相信(我可能错了),最好的解决方案是创建一个能够允许所有必要操作的web服务(如果可能的话,使用RESTful或Rest等标准)。

按照这个逻辑,我遇到了一个问题:用户的身份验证和身份管理。这带来了问题,因为应用程序用户需要经过身份验证才能预执行某些操作。

我已经研究过WS安全性,但这显然需要在服务器上存储未加密的密码,这是不可接受的!然后我查看了Oauth,但乍一看,这似乎需要做很多工作,并不特别适合我的需求(接受申请的方式让我不高兴,因为这将是我的申请,我的申请只使用web服务,而不是任何外部应用程序)。我读过很多关于做我想做的事情的其他方法,但说实话,我有点困惑,我不知道什么信息是可靠的,什么不是。

我想指出的是,我使用symfony2作为后端,使用jquery作为客户端JavaScript。此外,我希望得到一个详细的、循序渐进的回应,因为我真的对我所读到和听到的一切感到困惑。

谢谢你抽出时间,我希望有人能帮我,因为事情很紧急。

晚上好

我不完全确定这是否回答了您的请求,但由于UI总是在客户端处理,我认为您可以使用无状态HTTP身份验证:

这是security.yml:中的防火墙

security:
    firewalls:
        api:
            pattern: ^/api/ # or whatever path you want
            http_basic: ~
            stateless: true

然后,基本上的想法是,在服务器上,您使用普通的用户提供商、编码器等来实现最大的安全性,在客户端上,您发送HTTP身份验证标头,例如,在jQuery:中

$.ajax("...", {
    username: "Foo",
    password: "bar"
});

请注意,由于身份验证是无状态的(从未创建过cookie),因此必须随每个请求发送标头,但我认为,由于应用程序几乎完全是客户端的,这不是问题。

您还可以查看Symfony2安全手册,了解有关如何设置HTTP身份验证的更多信息。此外,请确保在ACL中强制HTTPS访问,以便确保包含凭据的请求的安全(ACL定义中的requires_channel: https)。

相关内容

  • 没有找到相关文章

最新更新