-1

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

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

遵循这个逻辑,我遇到了一个问题:用户的身份验证和身份管理。由于应用程序用户需要进行身份验证才能执行某些操作,因此这带来了问题。

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

我想说明的是,我将symfony2用于后端,jquery用于客户端JavaScript。 此外,我想详细的一步一步的回应,因为我真的很困惑我读过的所有内容。

谢谢你的时间,我希望有人可以帮助我,因为它非常紧迫。

晚上好

回答

0

我不能完全肯定这是否回答您的要求,但由于用户界面将始终在客户端进行处理,我想你可以使用无状态的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 security manual以获取有关如何设置HTTP身份验证的更多信息。另外,请确保在您的ACL中强制使用HTTPS访问,以便保护包含凭据的请求(您的ACL定义中为requires_channel: https)。