我的网络服务需要browser
和non-browser
个客户。我使用基于令牌的身份验证来生成服务stateless
。
我将令牌存储为cookie,因为我希望当从网页发起一些Ajax调用时,令牌会随automatically by the browser
一起发送。
但对于非浏览器客户端,如何处理cookie?我只是将cookie作为普通的HTTP标头来管理吗?
答案 0 :(得分:0)
在非浏览器客户端上执行此操作的理想方法是使用类似OAuth2协议的方法。该协议旨在为浏览器和非浏览器客户端安全地处理此类内容。
以下是它的工作原理:
/oauth/token
。/oauth/token
发送表单编码的POST请求,指定客户端使用的OAuth2的“类型”。对于非浏览器客户端,您很可能在POST请求的正文中提供grant_type=password
。您的客户将返回的是一个访问令牌/刷新令牌,应该安全地存储在您的客户端上。
如果您的客户端是iOS等移动设备,您可以将访问/刷新令牌存储在iOS钥匙串中 - 如果您使用的是Android,则可以在共享首选项中存储这些令牌。无论哪种方式 - 这些都是'安全'存储位置,用于保存令牌等机密信息。
然后,当您需要使用这些令牌对您的服务进行身份验证时,您只需使用该令牌POST到您的API,然后bam,您将通过身份验证。
这是在大多数情况下处理令牌内容的理想方式。我是Node中名为express-stormpath的身份验证库的作者,我也是这样做的。