3

使用 jupyterhub 0.8.1。在对 Jupyterhub 进行 Rest-Api 调用(用于 Jupyterhub 中的用户/服务和服务器管理)时,我们需要为 Authorization 标头提供 Value

例如“令牌 e9f6bdea27b5e3d2bs906ad1de0d2739”

例如标题

Authorization: token e9f6bdea27b5e3d2bs906ad1de0d2739

标头值中的“令牌”关键字有什么解释吗?

4

2 回答 2

1

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

使用

授权:token cn389ncoiwuencr

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

更多解释:

基于令牌的身份验证

每次请求都必须发送用户名和密码是不方便的,即使传输是安全的 HTTP,也可能被视为安全风险,因为客户端应用程序必须将这些凭据存储在未经加密的情况下才能随请求一起发送。

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

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

令牌通常带有过期时间,过期后它们将失效,需要获取新的令牌。如果令牌泄漏可能造成的潜在损害要小得多,因为它们的寿命很短。

于 2018-03-08T08:02:58.497 回答
1

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

标头的语法Authorization是:

Authorization: <type> <credentials>

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

还有其他认证/授权方案(类型),例如Basic, Bearer,OAuth等。这意味着,所有这些关键字也可以根据使用的方案代替token标头中的关键字。

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

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

例子:

Basic让我们稍微谈谈身份验证。在authAuthorization的情况下,标头看起来像这样:Basic

Authorization: Basic asldkfj89s7flsjfl==

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

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

Basicauth 中,该<credentials>部分是base64客户端的<username:password>. 现在,服务器知道这是Basicauth,因此它将知道如何验证客户端 - 通过解码base64凭据并查看usernameand password

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

于 2018-03-08T10:57:13.420 回答