WCF可以使用用户名密码进行Windows身份验证吗?

时间:2011-05-02 14:57:14

标签: wcf authentication windows-authentication ntlm networkcredentials

我正在构建一个wcf服务,该服务旨在使用Windows身份验证在Intranet环境中运行。我一直在快乐地使用本地计算机上的某种默认设置。

现在的问题是我需要测试它安装到异地演示计算机上。我只需要使用用于wcf服务计算机用户帐户的用户名密码来运行它。

这是我的客户代码:

using (ImportServiceClient client = new ImportServiceClient("ImportServiceSoap12", REMOTE_ADDRESS))
{
    client.ClientCredentials.Windows.AllowNtlm = true;
    client.ClientCredentials.Windows.ClientCredential =
        new NetworkCredential(userName, password, computerName);

    result = client.Sync(items.ToArray());
}

是否可以配置wcf服务,以便将凭据转换为其计算机上的Windows帐户?

我一直在阅读这里和那里的矛盾帖子,但我觉得相当确定IIS不应该是身份验证的一部分。我不确定ASP.Net认证节点是否适用,或者它是否都是绑定配置。

理想情况下,我希望它是NTLM类型的身份验证,这样我就不需要设置https。

1 个答案:

答案 0 :(得分:3)

  

是否可以配置wcf服务,以便将凭据转换为其计算机上的Windows帐户?

没有。集成Windows身份验证要求服务器和客户端都属于同一个域(或者在任何情况下都具有信任关系的域)。您无法在服务器上对本地计算机帐户运行IWA。

您必须使用其他(可能是自定义的)身份验证形式,然后模拟您要在服务器代码中运行的用户。