如何为浏览器"以及#34;和#34;非浏览器"客户呢?

时间:2016-01-06 06:48:09

标签: authentication cookies client access-token

我的网络服务需要browsernon-browser个客户。我使用基于令牌的身份验证来生成服务stateless

我将令牌存储为cookie,因为我希望当从网页发起一些Ajax调用时,令牌会随automatically by the browser一起发送。

但对于非浏览器客户端,如何处理cookie?我只是将cookie作为普通的HTTP标头来管理吗?

1 个答案:

答案 0 :(得分:0)

在非浏览器客户端上执行此操作的理想方法是使用类似OAuth2协议的方法。该协议旨在为浏览器和非浏览器客户端安全地处理此类内容。

以下是它的工作原理:

  • 您的服务会公开OAuth2端点,通常为/oauth/token
  • 您的客户端向/oauth/token发送表单编码的POST请求,指定客户端使用的OAuth2的“类型”。对于非浏览器客户端,您很可能在POST请求的正文中提供grant_type=password
  • 您还需要输入用户名/密码进行身份验证。

您的客户将返回的是一个访问令牌/刷新令牌,应该安全地存储在您的客户端上。

如果您的客户端是iOS等移动设备,您可以将访问/刷新令牌存储在iOS钥匙串中 - 如果您使用的是Android,则可以在共享首选项中存储这些令牌。无论哪种方式 - 这些都是'安全'存储位置,用于保存令牌等机密信息。

然后,当您需要使用这些令牌对您的服务进行身份验证时,您只需使用该令牌POST到您的API,然后bam,您将通过身份验证。

这是在大多数情况下处理令牌内容的理想方式。我是Node中名为express-stormpath的身份验证库的作者,我也是这样做的。