【问题标题】:How to use authentication with MVC Web API?如何使用 MVC Web API 进行身份验证?
【发布时间】:2013-12-09 04:15:23
【问题描述】:

我正在尝试为另一个 MVC 站点访问的 MVC Web API 配置身份验证。我在 web.config 中尝试了很多东西,来自 SO 的许多建议。然而一切都无济于事。

我正在使用来自 MVC 网站的以下代码:

var web = new WebClient();
web.UseDefaultCredentials = false;
web.Credentials = new NetworkCredential(username, password);

然后,我使用该 Web 客户端调用其他仅包含 API 控制器的 MVC 站点上的方法。如果没有身份验证,一切都会正常工作,但我无法让身份验证正常工作。发出请求时,我得到一个返回 401 的异常(如果您问我,这是一件好事,但它似乎没有发送凭据)。

我也尝试在 URL 中输入用户名和密码,但也没有用。

这里是 Web API 站点的 web.config 文件的相关部分:

    <authentication>
      <forms 
        cookieless="UseUri"
        enableCrossAppRedirects="false">
        <credentials passwordFormat="Clear">
          <user name="site" password="XYZ123!"/>
        </credentials>
      </forms>
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>

我想在其中放置一个用户名/密码,以确保它是调用方法的网站。顺便说一句,我的 API 控制器具有“授权”属性。

我的问题是:如何向 Web API 站点添加身份验证,以便我可以使用身份验证对其调用方法?

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-web-api


    【解决方案1】:

    使用基本身份验证。您可以创建一个 AuthorizationAttribute 来验证 Authorization 标头中的用户名/密码,并在未授权时返回 401 响应。

    更多信息请参见this post

    【讨论】:

      【解决方案2】:

      您可以使用基本身份验证而不是表单身份验证,正如我在this answer 中说明的那样。还有其他可能的身份验证方式。例如this blog post 中所示的基于令牌的身份验证。

      【讨论】:

        猜你喜欢
        • 2018-03-19
        • 2017-03-03
        • 1970-01-01
        • 1970-01-01
        • 2016-07-03
        • 2016-06-17
        • 1970-01-01
        • 1970-01-01
        • 2015-01-12
        相关资源
        最近更新 更多