Authentication 如何对web服务进行身份验证;浏览器";及;非浏览器“;客户?

Authentication 如何对web服务进行身份验证;浏览器";及;非浏览器“;客户?,authentication,cookies,client,access-token,Authentication,Cookies,Client,Access Token,我的web服务需要浏览器和非浏览器客户端。我使用基于令牌的身份验证使服务成为无状态的 我将令牌存储为cookies,因为我希望当一些Ajax调用从web页面启动时,该令牌由浏览器自动发送 但对于非浏览器客户端,如何处理cookie?我只是将cookie作为一个普通的HTTP头来管理吗?在非浏览器客户端上实现这一点的理想方法是使用类似OAuth2协议的东西。该协议旨在为浏览器和非浏览器客户端安全地处理类似的内容 下面是它的工作原理: 您的服务公开OAuth2端点,通常是/oauth/token

我的web服务需要
浏览器
非浏览器
客户端。我使用基于令牌的身份验证使服务成为无状态的

我将令牌存储为cookies,因为我希望当一些Ajax调用从web页面启动时,该令牌由浏览器自动发送


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

在非浏览器客户端上实现这一点的理想方法是使用类似OAuth2协议的东西。该协议旨在为浏览器和非浏览器客户端安全地处理类似的内容

下面是它的工作原理:

  • 您的服务公开OAuth2端点,通常是
    /oauth/token
  • 您的客户端向
    /oauth/token
    发送一个表单编码的POST请求,指定客户端使用的OAuth2的“类型”。对于非浏览器客户端,您最有可能在POST请求的正文中提供
    grant_type=password
  • 您还可以使用用户名/密码进行身份验证
然后,您的客户机将得到一个访问令牌/刷新令牌,它应该安全地存储在您的客户机上

如果你的客户端是像iOS这样的移动设备,你会将访问/刷新令牌存储在iOS密钥链中——如果你在Android上,你会将这些令牌存储在共享首选项中。无论哪种方式——这些都是“安全”的存储位置,用于保存令牌等机密信息

然后,当您需要使用这些令牌对您的服务进行身份验证时,您只需将该令牌发布到您的API,bam就会对您进行身份验证


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

在非浏览器客户端上实现这一点的理想方法是使用类似OAuth2协议的东西。该协议旨在为浏览器和非浏览器客户端安全地处理类似的内容

下面是它的工作原理:

  • 您的服务公开OAuth2端点,通常是
    /oauth/token
  • 您的客户端向
    /oauth/token
    发送一个表单编码的POST请求,指定客户端使用的OAuth2的“类型”。对于非浏览器客户端,您最有可能在POST请求的正文中提供
    grant_type=password
  • 您还可以使用用户名/密码进行身份验证
然后,您的客户机将得到一个访问令牌/刷新令牌,它应该安全地存储在您的客户机上

如果你的客户端是像iOS这样的移动设备,你会将访问/刷新令牌存储在iOS密钥链中——如果你在Android上,你会将这些令牌存储在共享首选项中。无论哪种方式——这些都是“安全”的存储位置,用于保存令牌等机密信息

然后,当您需要使用这些令牌对您的服务进行身份验证时,您只需将该令牌发布到您的API,bam就会对您进行身份验证

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