[英]How to authenticate a web service for both “browser” and “non-browser” clients?
我的Web服务同时需要browser
和non-browser
客户端。 而且我使用基于令牌的身份验证来使服务变为stateless
。
我将令牌存储为cookie,因为我希望当从网页启动一些Ajax调用时automatically by the browser
发送令牌。
但是对于非浏览器客户端,如何处理cookie? 我是否仅将Cookie作为纯HTTP标头管理?
在非浏览器客户端上执行此操作的理想方法是使用类似OAuth2协议的协议。 该协议旨在安全地为浏览器和非浏览器客户端处理类似的事情。
运作方式如下:
/oauth/token
。 /oauth/token
发送一个表单编码的POST请求,指定客户端正在使用的OAuth2的“类型”。 对于非浏览器客户端,您很可能会在POST请求的正文中提供grant_type=password
。 然后,您的客户端将获得BACK,这是应该安全存储在您的客户端上的访问令牌/刷新令牌。
如果您的客户端是像iOS这样的移动设备,则将访问/刷新令牌存储在iOS钥匙串中;如果您使用的是Android,则将这些令牌存储在“共享首选项”中。 无论哪种方式-这些都是“安全的”存储位置,用于保存诸如令牌之类的机密信息。
然后,当您需要使用这些令牌对您的服务进行身份验证时,您只需使用该令牌和bam POST到您的API,即可对您进行身份验证。
这是在大多数情况下处理令牌的理想方法。 我是Node中一个名为express-stormpath的身份验证库的作者,这也是我的做法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.