【问题标题】:WCF Service with Active Directory Authentication具有 Active Directory 身份验证的 WCF 服务
【发布时间】:2010-11-05 02:54:25
【问题描述】:

我正在编写一个 WCF 服务,它允许访问基于 AD 用户组的操作。如果登录用户是groupA 的一部分,则允许他执行operationA,但不允许执行operationB 等等。现在为此我必须将NetworkCredentials 传递给服务,例如

factory.Credentials.Windows.AllowedImpersonationLevel = 
                     TokenImpersonationLevel.Identification;
factory.Credentials.Windows.AllowNtlm = true;
factory.Credentials.Windows.ClientCredential.username = "username";
factory.Credentials.Windows.ClientCredential.password = "pwd";
factory.Credentials.Windows.ClientCredential.domain = "mycompany.com";

我希望用户不需要输入他的凭据来调用服务操作。它应该来自Thread.CurrentPrincipal。任何人都可以在这方面帮助我如何传递网络凭据。

【问题讨论】:

    标签: asp.net wcf authentication active-directory


    【解决方案1】:

    您为什么不在绑定上指定安全模式为“Windows 集成”安全?这是 net.Tcp 和 wsHttp 绑定的默认设置 - 当前登录用户的 Windows 凭据将通过网络发送到服务器。

    真的,无需再次显式设置这些凭据。

    【讨论】:

    • 你的意思是我应该从我的客户中删除上面的代码吗?如果是,它仍将 ASPNET 帐户作为默认凭据。你可以发布一些代码来帮助我吗?感谢您的回复。
    • AHA - ASP.NET - 你在原来的帖子中没有提到这一点!
    • 这取决于您如何设置 ASP.NET - 如果您匿名连接到您的 ASP.NET 站点,您将“丢失”您的凭据,并且 ASP.NET 将连接到您的 WCF 服务它自己的凭据。如果您已经为 ASP.NET 应用程序(在 IIS 管理器中)设置了 Windows 身份验证,我认为应该没问题。
    猜你喜欢
    • 1970-01-01
    • 2015-01-11
    • 2011-10-30
    • 2016-02-14
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 2019-10-04
    • 2015-02-20
    相关资源
    最近更新 更多