-1

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

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

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

我研究了 WS-security,但这显然需要存储密码,在服务器上未加密,这是不可接受的!然后我查看了 Oauth,但乍一看,这似乎需要做很多工作,而且并不特别适合我的需求(必须接受申请的方式并不让我满意,因为这将是我的申请,而且只是我的申请使用 Web 服务,而不是任何外部应用程序)。我已经阅读并听说过很多其他方法来做我想做的事,但老实说,我有点困惑,我不知道哪些信息是可靠的,哪些不是。

我想指出,我将 symfony2 用于后端,将 jquery 用于客户端 JavaScript。此外,我想要一个详细的、逐步的回应,因为我真的对我所读到和听到的一切感到困惑。

谢谢你的时间,我希望有人能帮助我,因为它很紧急。

晚上好

4

1 回答 1

0

我不完全确定这是否能满足您的要求,但由于 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 访问,因此包含凭据的请求是安全的(requires_channel: https在您的 ACL 定义中)。

于 2012-03-10T11:33:35.787 回答