ASP.NET Web API 2 - 如何在默认 VS 2013 模板中启用基本身份验证?

ASP.NET Web API 2 - How to enable Basic Authentication in default VS 2013 template?

我刚刚在 VS 中创建了 Web Api 2 项目并选择了个人用户帐户身份验证。我还使用 POST 创建了一个帐户(帐户存在,我在创建的数据库中签入)。

我尝试调用具有 [Authorize] 属性的操作,但收到了 401 响应。接下来,我尝试在 Fiddler 中添加 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== header 请求(在 TextWizard 中粘贴 username:password 并转换为 Base64),

但我仍然得到 401。我需要在默认 VS 项目中更改什么才能启用身份验证?总而言之,我只得到 401 个响应。

看来您首先需要通过调用 /tokens 操作获取不记名令牌,然后在后续请求中包含该令牌。

请查看Secure a Web API with Individual Accounts and Local Login in ASP.NET Web API 2.2教程以获得详细说明。

基本身份验证是一种不受欢迎的协议,不推荐用于任何新项目,主要是因为密码本身是通过每个请求发送的。通过 http,密码只是以纯文本形式发送(以及 base64 编码),通过 SSL,它是加密的,但中间的人只是暴露了密码。

因此它未包含在内置提供程序中,主要是为了鼓励您查看其他机制。

该团队确实为 aspnet codeplex 项目中可用的基本身份验证构建了一个示例,该项目为 Web API、MVC 和其他项目公开了许多其他示例。

可以找到基本的 auth 示例 here

该示例相当冗长,但总的来说它涉及编写身份验证过滤器和实施质询流程。

本文 http://www.asp.net/web-api/overview/security/authentication-filters 介绍了基本身份验证的设计和身份验证流程。

本文详细介绍了另一种适用于 Web API1 的方法,它仅适用于 IIS,并且仅在必须使用 Web API1 时才推荐使用。http://www.asp.net/web-api/overview/security/basic-authentication