我可以在 Authorization 标头中同时使用 Basic 和 Bearer 吗?
Posted
技术标签:
【中文标题】我可以在 Authorization 标头中同时使用 Basic 和 Bearer 吗?【英文标题】:Can I use both of Basic and Bearer in Authorization header? 【发布时间】:2020-06-10 04:21:50 【问题描述】:我为 API 授权实现了 JWT 令牌。每个需要授权的请求都在 Authorization 标头中使用 JWT 令牌发送,如下所示:Authorization: Bearer <token>
。
除了登录请求之外,我对 JWT 令牌的一切都很清楚。
我只想在登录请求中使用Authorization: Basic <credentials>
。我想以纯文本形式发送用户名和密码似乎不太好。但我不确定。
是否可以在登录请求中使用Basic <credentials>
,然后在其他请求中使用Bearer <token>
?
【问题讨论】:
【参考方案1】:早上好。最佳实践是创建一个方法并使用 POST 调用来调用它。将登录凭据作为对象传递给 post 方法。登录方法应返回 JWT 令牌。收到 JWT 令牌后,请使用 bearer XXXXXXXX。
例子:
[AllowAnonymous]
[HttpPost]
public IActionResult CreateToken([FromBody]LoginModel login)
// Your logic to Authenticate and Generate the JWT TOKEN.
return response;
【讨论】:
感谢您的回答。我已经知道许多示例使用使用POST
调用发送登录凭据的方法。我只是想知道为什么您在发送登录凭据时不使用Basic
如果不考虑一些安全项目,使用基本身份验证可能风险不大。下面参考链接中的答案。 security.stackexchange.com/questions/988/…以上是关于我可以在 Authorization 标头中同时使用 Basic 和 Bearer 吗?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我应该在 `Authorization: Bearer` 标头中发送令牌?
HttpRequestMessage 不允许 Authorization 标头值
为啥要对 Authorization 标头进行 base64 编码?
调用 HTTPClient.PostAsync 时设置 Authorization/Content-Type 标头