【问题标题】:How to pass Windows Authentication credential from client to Web API service如何将 Windows 身份验证凭据从客户端传递到 Web API 服务
【发布时间】:2014-12-13 08:00:37
【问题描述】:

在我的公司环境中,我有 IIS7.5 托管 Web API 服务和一个单独的网站,该网站通过 RestSharp 库调用该服务。两者当前都配置了 Windows 身份验证。

如果我使用浏览器导航到其中一个,系统会提示我输入我的 Windows 凭据,并且一切正常...我得到了我想要的网页,而 REST 服务吐出了我的数据。我正在努力弄清楚的部分是如何使用单个凭据进行身份验证。我不知道如何将网站的凭据传递给服务(我尝试过模拟但没有成功),或者手动提示用户输入用户名/密码,然后使用“Windows”对其进行身份验证。

帮助一个菜鸟?

【问题讨论】:

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


    【解决方案1】:

    网络 API 设置

    1. 启用Windows Authentication

    网络应用设置

    1. 启用Windows Authentication
    2. 在 web.config 的 <system.web> 中添加 <identity impersonate="true" />
    3. 在 web.config 中添加以下内容:

       <system.webServer>
           <validation validateIntegratedModeConfiguration="false" />
       </system.webServer>
      
    4. 在 IIS 中启用 Windows AuthenticationASP.NET Impersonation

    您可以使用以下代码将数据 POST 到 Web API(当然也可以使用 GET)

    using (var client = new WebClient { UseDefaultCredentials = true })
    {
        client.Headers.Add(HttpRequestHeader.ContentType, "application/xml; charset=utf-8");
        byte[] responseArray = client.UploadData("URL of web API", "POST", Encoding.UTF8.GetBytes(XMLText));
        string response = Encoding.ASCII.GetString(responseArray);
    }
    

    注意:如果您仍然收到 401 错误,您可能需要为您的 URL 使用 IP 地址而不是常规域名(例如:155.100.100.10 而不是 mycompany.com)

    【讨论】:

      【解决方案2】:

      如果您在网站上使用模拟并且 API 在同一台服务器上运行,它应该可以工作。

      http://msdn.microsoft.com/en-us/library/aa292118(v=vs.71).aspx

      但是,如果您将 API 移动到与站点不同的服务器上,这将停止工作。两台服务器设置需要 Kerberos 委派。

      【讨论】:

      • 谢谢,@Anders。该站点和 API 在不同的站点上运行。我来看看kerberos。
      • 我想警告您,Kerberos 委派是不平凡的。我还没有找到一个知道如何做或愿意尝试的 IT 部门。一种解决方法是使用可以访问站点在调用 API 服务器到服务器时可以使用的所有内容的服务帐户。这不是最漂亮的解决方案,它要求您签入代码,以使登录到网站的用户不会从 API 获得比他或她应该得到的更多信息。但至少它是一个可行的选择,不需要对 IT 环境进行大量侵入性更改。
      猜你喜欢
      • 2018-05-12
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 2019-12-01
      • 2010-12-08
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      相关资源
      最近更新 更多