Web API身份验证基础与承载


Answers:


117

基本和摘要身份验证方案专用于使用用户名和密钥的身份验证(请参阅RFC7616RFC7617)。

承载认证方案专用于使用令牌的认证,并由RFC6750描述。即使此方案来自OAuth2规范,您仍然可以在客户端和服务器之间交换令牌的任何其他上下文中使用它。

关于JWT身份验证,因为它是令牌,所以最好的选择是Bearer身份验证方案。但是,没有什么可以阻止您使用适合您要求的自定义方案。


35

基本身份验证将凭据作为用户ID /密码对传输,并使用base64进行编码。客户端发送HTTP请求,该请求的Authorization标头包含单词Basicword,空格和base64-encoded字符串username:password。

授权:基本ZGVtbzpwQDU1dzByZA ==

在此处输入图片说明 注意:对于基本身份验证,由于用户ID和密码以明文形式(通过base64编码,但是base64是可逆编码)通过网络传递,因此基本身份验证方案不安全。HTTPS / TLS应该与基本身份验证结合使用。


承载认证(也称为令牌认证)具有称为承载令牌的安全令牌。名称“承载者身份验证”可以理解为“授予对此令牌的承载者的访问权限”。承载令牌是一个神秘的字符串,通常由服务器响应登录请求生成。向受保护资源发出请求时,客户端必须在授权标头中发送此令牌:

授权:不记名<令牌>

在此处输入图片说明

注意:与基本身份验证类似,承载身份验证只能在HTTPS(SSL)上使用

有关更多信息,link1link2


所以这都是授权,不是真正的授权。在第一个中,您发送base64编码的字符串并获得授权,而在后一个中,您返回一个令牌并使用它来访问资源
头脑风暴

与用户名/密码相比,传递令牌有什么优势?
穆罕默德·乌默尔

@MuhammadUmer,您可以吊销令牌,还可以授予它们精细的访问权限(即,仅读取访问权限)。
Mihai

我找到了答案,这是因为您不必使用令牌进行数据库读取,您可以使用加密来验证令牌,这最适合没有共享会话状态的微服务,尽管有负载均衡器可以将一个用户固定为一项服务,但仍然表现出色。
穆罕默德·乌默尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.