WCF - 覆盖Windows身份验证

时间:2015-06-05 12:59:55

标签: c# wcf authentication ldap

有两个域:domainA.com和domainB.com。

domainA.com中托管了一个wcf服务,该服务使用Windows身份验证来识别用户。

只要domainA中的用户只使用该服务,这样就可以正常工作。不幸的是,来自domainB的用户很快也需要使用此服务,并且从domainB帐户连接时Windows身份验证失败。

是否可以通过将其指向domainB LDAP来覆盖Windows身份验证? 如果没有关于如何在这种情况下验证domainB用户的其他解决方案?

我发现,一个灵魂将从Windows切换到UserName clientCredentialType,提示用户输入用户名和密码,然后使用自定义UserNamePasswordValidator来验证domainB LDAP。但是,如果可能,我希望避免提示用户输入密码。

你有什么建议吗?

1 个答案:

答案 0 :(得分:0)

使用DirectoryEntry类构造函数的第一个参数是域。然后只需输入用户名和密码。如果域之间没有信任,则必须更改要为用户授权的域的域。

如果抛出异常,则用户未经过身份验证。

using (DirectoryEntry de = new DirectoryEntry(ldap://mydomain.com:389, LDAPUser, LDAPPass, authflags))
{
    try
    {
        Object obj = de.NativeObject;
    }
    catch (Exception ex)
    {
        ErrorMsg = ex.Message;
    }
}