Authorization header 的值中的 Token 关键字是否有任何解释?

Is there any explanation for Token keyword in value of Authorization header?

使用 jupyterhub 0.8.1。在对 Jupyterhub 进行 Rest-Api 调用时(对于 Jupyterhub 中的 user/services 和服务器管理),我们需要提供具有值

的授权 headers

例如"token e9f6bdea27b5e3d2bs906ad1de0d2739"

例如共 header

Authorization: token e9f6bdea27b5e3d2bs906ad1de0d2739

header 的值中 "token" 关键字有任何解释吗?

The Authorization: <type> <credentials> 模式由 W3C 在 HTTP 1.0 中引入,此后在许多地方被重用。许多 Web 服务器支持多种授权方法。在这些情况下,仅发送令牌是不够的。

使用

的网站

授权:token cn389ncoiwuencr

格式最有可能实现 OAuth 2.0 tokens.The OAuth 2.0 授权框架设置了许多其他要求以确保授权安全,例如要求使用 HTTPS/TLS.

更多解释:

基于令牌的身份验证

每次请求都必须发送用户名和密码很不方便,并且即使传输是安全的 HTTP 也可能被视为安全风险,因为客户端应用程序必须在没有加密的情况下存储这些凭据才能发送他们提出要求。

对先前解决方案的改进是使用令牌对请求进行身份验证。

想法是客户端应用程序交换身份验证凭据以获得身份验证令牌,并在后续请求中仅发送此令牌。

令牌通常有一个过期时间,过期后它们就会失效,需要获取新的令牌。由于令牌的生命周期短,如果令牌泄漏可能造成的潜在损害要小得多。

Authorization 是一个请求 header。浏览器将此 header 发送到服务器以验证客户端。

Authorization header 的语法是:

Authorization: <type> <credentials>

在您的示例中,token 是用于对用户进行身份验证的身份验证方案的名称。

authentication/authorization还有其他方案(类型),例如BasicBearerOAuth等,也就是说,这些关键字也都可以带token 关键字在 header 中的位置取决于所使用的方案。

每个身份验证方案都有自己的客户端身份验证方式。

因此,关键字 token 告诉服务器使用 token 身份验证方案来验证此客户端。没有这个关键字,服务器就不知道如何验证用户。

示例:

让我们稍微谈谈 Basic 授权。 Authorization header 在 Basic 的情况下看起来像这样 auth:

Authorization: Basic asldkfj89s7flsjfl==

                     \_________________/
                             |
                      This part is base64 encoding of 
                      <username:password> of the client

因此,当请求到达服务器时,它可以告诉客户端正在使用哪种类型的身份验证方案来验证自己。从上面的例子来看,它是 Basic auth。

Basic auth中,<credentials>部分是客户端<username:password>base64编码。现在, 服务器知道这是 Basic 身份验证,因此它将知道如何验证客户端 - 通过解码 base64 凭据并查看 usernamepassword.

如果是其他一些身份验证方案,服务器将以不同的方式处理 <credentials> 以验证用户。