以下两个头部信息有什么区别?
哪一个更好?
X-Auth-Token : dadas123sad12
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
以下两个头部信息有什么区别?
哪一个更好?
X-Auth-Token : dadas123sad12
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Authorization
是客户端在 HTTP 中用于对等方进行身份验证的主要标头,如 RFC 7235 所预见。通常与 RFC 7617 的基本认证方案有关,但并非必须。
Basic
方案允许客户端提供一个用户名-密码对,用冒号(:
)分隔并以 Base64 编码。不能强调这是一种仅提供传输编码而不提供真正安全性的编码方式。例如,您提供的示例可以轻松地“解密”为 Aladdin:open sesame
。
通过 IANA HTTP 认证方案注册表 (也请参阅:RFC 7235,第5.1节),您将找到与 OAuth 2.0 密切相关的 Bearer
方案(在 RFC 6750 中定义)。X-Auth-Token
在这里几乎提供了一条捷径,因为它(可能)既不依赖于 OAuth,也不依赖于 HTTP 认证框架。
请注意,X-Auth-Token
是一个未注册的标头,因此不受任何正式规格的约束,其存在和内容始终与相应的应用程序相关联。不能对它作出一般性假设。
'Authorization: Basic' 表示基本认证,浏览器/客户端必须在每个请求中提供用户名和密码。
对于 'x-auth-token',用户第一次需要提供用户名和密码,服务器会在头字段 'x-auth-token' 中返回访问令牌。对于后续的会话,将交换此令牌,而不是用户名/密码。
"Basic " + Buffer.from("username:password").toString("base64");
对于客户端JavaScript,您可以检查window.atob()
函数以将字符串编码为base64。
在X-Authorization的情况下,用户必须首次向服务器传递其用户名/密码,并且服务器会响应此X-Authorization
令牌,在那个会话中,用户进行的每个api调用都只使用该X-auth令牌而不是其凭据。
[解决方案] 当您收到以下响应时,您必须在Outh令牌前加上"Bearer"前缀。
{ "errorCode": 401,
"errorDesc": "Full authentication is required to access this resource",
"_userDesc": "Unauthorized"}
应该是以下的授权头部信息
Bearer eyJraWQiOiJrOTgwMy4xNTk5ODQyODg3IiwiYWxnIjoiUlM1MTIifQ....
问题将会得到解决。 谢谢。