【问题标题】:WebAPI: How basic authentication can work without the word basicWebAPI:基本身份验证如何在没有基本单词的情况下工作
【发布时间】:2018-04-11 20:22:59
【问题描述】:

我正在阅读一篇带有代码示例的文章,该示例展示了如何使用 api 实现基本身份验证。文章链接是https://www.infoworld.com/article/2990800/application-architecture/implement-http-authentication-in-web-api.html

查看他们将凭据发送到服务器的客户端代码。

public void BasicAuthenticationTest()
{
    string username = Convert.ToBase64String(Encoding.UTF8.GetBytes("joydip"));
    string password = Convert.ToBase64String(Encoding.UTF8.GetBytes("joydip123"));
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", username + ":" + password);
    var result = client.GetAsync(new Uri("http://localhost/IDG/api/default/")).Result;
    Assert.IsTrue(result.IsSuccessStatusCode);
}

特别看这行client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", username + ":" + password);

没有基本字存在授权字后....那么它是怎么回事 工作吗?

签名应该类似于 Authorization: Basic anNtaXRoOlBvcGNvcm4=

所以请有人给我一些关于它的知识。

最后一个问题,如果是基本身份验证,我们可以从服务器端返回一个令牌吗? 如果可能的话,分享一些知识如何在基本身份验证的情况下返回令牌。

谢谢

【问题讨论】:

标签: c# asp.net-web-api basic-authentication


【解决方案1】:

API 可以随意以任何方式实现授权。 scheme“Basic”由 Windows 上的 IIS 用于确认用户帐户是否正确,但 API 可以使用任何方案,或者不使用任何方案。

“基本”没有什么特别之处,只是它是一种常见的约定。只要 Authorization 标头的参数值符合 API 的预期,它就可以工作。

【讨论】:

  • 你是想说我在这里发布的代码适用于基本身份验证。基本这个词只是基本身份验证的一个约定,不是强制性的......我说得对吗?
  • 我不知道它是否会起作用。这取决于服务如何实现身份验证/授权。
  • 在这里你说“除了它是一个常见的约定之外,“基本”没有什么特别之处”所以从你的陈述中我认为基本这个词只是一个约定而不是强制性的。
  • 我想我不是很清楚。身份验证是一个实现细节。您可以将标头值设为“MickeyMouse”并编写逻辑代码以验证用户。有众所周知的标头(例如Authorization)和经常使用的约定(例如“基本身份验证”),但是当您自己编写身份验证逻辑时,完全取决于您在标头或cookie或POST正文中寻找什么,甚至(喘息)查询字符串。
猜你喜欢
  • 2020-02-12
  • 2012-10-06
  • 2022-01-09
  • 1970-01-01
  • 2020-06-24
  • 2015-10-01
  • 2014-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多