Web API身份验证:基本认证 vs Bearer认证

157

我已经在我的Web API应用程序中创建了基于JWT的身份验证。

我无法弄清楚以下两种令牌的区别:

  1. Basic Token
  2. Bearer Token

有人可以帮忙解答吗?

2个回答

158
基本认证和摘要认证方案专门用于使用用户名和密码进行身份验证(参见RFC7616RFC7617)。
Bearer认证方案专门用于使用令牌进行身份验证,并由RFC6750描述。即使此方案来自OAuth2规范,您仍可以在客户端和服务器之间交换令牌的任何其他上下文中使用它。
关于JWT身份验证,由于它是一个令牌,最好选择Bearer认证方案。然而,您仍然可以使用适合您需求的自定义方案。但是自定义方案可能会被应用程序误解。

123

基本认证将凭据作为用户ID/密码对进行传输,使用base64编码。客户端发送带有包含单词Basic和一个以空格分隔的base64编码的字符串用户名:密码的Authorization标头的HTTP请求。

Authorization: Basic ZGVtbzpwQDU1dzByZA==

enter image description here 注意:对于基本认证,由于用户ID和密码作为明文通过网络传输(尽管进行了base64编码,但base64是可逆编码),基本认证方案不安全。应该与HTTPS / TLS一起使用基本认证。


Bearer认证(也称为令牌认证)具有名为bearer token的安全令牌。名称“Bearer认证”可以理解为“授予此令牌的持有人访问权限”。Bearer令牌是一个加密的字符串,通常是服务器响应登录请求时生成的。客户端在请求受保护资源时必须在Authorization标头中发送此令牌:

Authorization: Bearer < token >

图片描述

注:类似于基本认证,仅应在 HTTPS(SSL)上使用 Bearer 认证。

有关更多信息,请参见链接1链接2


这两个都是授权,但实际上并不是真正的授权。在第一个中,您发送base64编码的字符串并获得授权,而在后者中,您会收到一个令牌并使用它来访问资源。 - brain storm
10
传递令牌相较于用户名和密码的优势是什么? - Muhammad Umer
7
您可以撤销令牌并授予它们细粒度访问权限(即只读访问权限)。 - Mihai
2
我找到了答案,那就是你不必使用令牌进行数据库读取,而可以使用加密验证令牌,这对于没有共享会话状态的微服务来说是最好的选择。虽然有负载均衡器可以将一个用户固定到一个服务上,但它仍然具有高性能。 - Muhammad Umer
4
对我来说,最好的答案是:只想补充一些场景,例如支付网关,您需要两种类型的身份验证,一步是使用基本信息进行身份验证,然后从那里开始下一次通信将使用Brear ...Jwt..令牌。后面的jwt令牌来自第一个返回的access_key令牌。 - Masoud
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接