1

我正在 Grails 中开发一个后端服务,它应该同时服务于 Web 应用程序和移动应用程序。

前端正在使用 AngularJS 开发,移动应用程序将使用相同的 AngularJS 代码库与 PhoneGap 一起原生。

现在,我正在寻找一种合适的方法来使用适用于 Web 应用程序和移动应用程序的 Grails 后端实现身份验证。

三个想法:

1) 将用户名和密码存储在 LocalStorage 中,并在每次请求时在后端对用户进行身份验证

2)使用基于cookie的身份验证(在PhoneGap中启用cookie很棘手,我应该从AJAX响应中提取并附加在AJAX请求中)

3) 开发一个自定义协议,为后端的每个会话生成一个令牌并将其存储在 LocalStorage 中。会话令牌将在每个请求中发送到后端。

4) 使用私钥/公钥机制(类似于 Amazon AWS)对每个请求进行签名。即使在这种情况下,后端也必须为每个请求验证签名的正确性(没有会话概念)。

我不太信任 LocalStorage,但我没有其他想法,也找不到任何示例(其他后端和前端技术的示例也会有所帮助)。

您可以假设后端将在 HTTPS 上运行。

4

1 回答 1

1

我会选择第三个,并添加一些内容:

  1. 第一次连接设备时,您以某种方式(用户/密码或其他方式)对用户进行身份验证。然后,您将持久性令牌发送到设备,该设备将其保存到 LocalStorage。
  2. 对于接下来的每个会话,在打开客户端时,将持久性令牌交换为短期会话令牌(短期会话令牌的长度取决于您,具体取决于上下文)。

这与您提供的内容类似,但降低了中间人攻击和重放攻击的风险。

希望这有帮助!

于 2013-09-27T17:03:09.760 回答