我可以在 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 标头

如何修复 Spring Security Authorization 标头未通过?

AWS-amplify 在请求中包含 cognito Authorization 标头