【问题标题】:Windows authentication using AD group in Asp.net WebApi not working在 Asp.net WebApi 中使用 AD 组的 Windows 身份验证不起作用
【发布时间】:2012-09-21 14:03:51
【问题描述】:

我使用 Asp.net WebAPI 开发了一个 Restful web 服务,并在 web.config 文件中使用了 windows 身份验证。此 WebService 由内部网络中的内部 windows 应用程序调用。现在的问题是当我发送请求时 IE 浏览器对 webService 的身份验证和授权工作正常。 但是当我通过寡妇应用程序发送请求时,用户没有经过身份验证。 设想 : 当我使用以下配置时,来自网络浏览器的请求已正确验证,但来自 Windows 应用程序的请求未经过验证,即使用户位于具有正确角色的正确 AD 组中。

   <authentication mode="Windows"/>
    <authorization>
       <allow roles = "someGroup1"/>
       <allow roles = "Somegroup2"/>
       <deny users="*" />
    </authorization>

可能是什么问题,请提供任何建议。

【问题讨论】:

  • 您可能需要确认客户端应用程序正在您期望的用户上下文中运行。例如,如果请求来自 Web 服务,则用户帐户将与当前登录的用户不匹配。
  • 这是更改代码还是更改 Windows 应用程序中的设置。如果您能提供有关这方面的任何细节,我将不胜感激。谢谢
  • 通常两者都没有。代码可以模拟不同的用户,但大多数时候它只与应用程序的运行方式有关。 Windows 服务和 Web 服务通常在系统帐户下运行。普通的 winforms 应用程序通常会以当前登录的用户身份运行。
  • 是的 Windows 应用程序正在以当前登录的用户身份运行。但是为什么身份验证在 IE 浏览器的情况下有效,而不是 Windows。有什么方法可以记录通过 Windows 应用程序和浏览器访问 Web 服务的用户。
  • 我发现了问题,Windows 客户端没有将用户信息发送到 Web 主机,因此身份验证和授权失败。由于我使用的是 NTML 身份验证,因此要解决此问题,我必须向 restClient 添加一个身份验证器,如下所示:client.Authenticator = new NtlmAuthenticator();

标签: asp.net-mvc-3 asp.net-web-api windows-authentication


【解决方案1】:

我发现了问题,Windows 客户端没有将用户信息发送到 Web 主机,因此身份验证和授权失败。由于我使用的是 NTML 身份验证,因此要解决此问题,我必须向 restClient 添加一个身份验证器,如下所示:

var client = new RestClient();
     client.BaseUrl = ServiceUrl;
     client.RemoveHandler("application/json");
     client.RemoveHandler("text/json");
     **client.Authenticator = new NtlmAuthenticator();** 

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2012-03-18
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多