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

Web services webservice身份验证和用户身份管理,web-services,authentication,webservice-client,user-management,user-identification,Web Services,Authentication,Webservice Client,User Management,User Identification,我和我的团队目前正在进行一个相当大的项目。我们正在开发一款在线游戏,目前可以通过两种方式访问: -通过web浏览器,应用程序可以使用完整的JavaScript(客户端)、完整的Ajax(基本上意味着UI将在JS客户端进行管理)。 -通过iPhone应用程序(UI将由应用程序本身管理) 在两个不同的应用程序之间,核心逻辑保持不变,因此我相信(我可能错了),最好的解决方案是创建一个能够允许所有必要操作的web服务(如果可能的话,使用RESTful或Rest等标准) 按照这个逻辑,我遇到了一个问题:用

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

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

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

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

我想指出的是,我使用symfony2作为后端,jquery作为客户端JavaScript。 此外,我想要一个详细的,一步一步的回答,因为我真的对我读过和听到的东西感到困惑

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


晚上好

我不确定这是否能满足您的请求,但由于用户界面总是在客户端处理,我认为您可以使用无状态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),每个请求都必须发送头,但是,我认为,由于应用程序几乎完全是客户端的,所以这不是问题

您还可以查看,以了解有关如何设置HTTP身份验证的更多信息。还要确保在ACL中强制HTTPS访问,以便包含凭据的请求得到保护(
要求在ACL定义中使用HTTPS