我目前的客户端装置会提示使用者输入user/pass,并建立传递至 WCF 服务的System.Net.NetworkCredential
。然后,此 WCF 服务会使用凭证来用于其他外部服务。
问题是每当我通过System.Net.NetworkCredential
传递到服务时,它似乎丢失了密码字段,因此我从未让它与外部服务进行身份验证。我已经测试过,只是将纯文本/字符串作为user/pass传递,它工作正常,但感觉这对安全性不是很好(尽管我为两个服务之间的所有流量启用了HTTPS)。
是否有方法将这些凭据正确地传递给服务?
以下是 WCF 服务的一些测试代码:
public string TestCred(System.Net.NetworkCredential c, string username, string pass)
{
cred = c;
userName = username;
passWord = pass;
string s = cred.UserName + cred.Password + "end";
return s;
}
我让它返回该字符串,以测试服务端实际接收到的内容,密码完全为空(用户名使其正常)。
下面是我在 WCF 服务上用来联系外部服务的代码:
externalService.Credentials = new System.Net.NetworkCredential(cred.UserName, cred.Password, "domain");
这不起作用,因为cred.Password字段为空,我也尝试过:
externalService.Credentials = cred;
这也失败了。
当我使用普通字符串时,效果很好:
externalService.Credentials = new System.Net.NetworkCredential(userName, passWord, "domain");
有什么建议吗?由于客户端设备WCF和服务外部服务之间的连接都是 HTTPS-SSL 必需的,所以它稍微安全一些,但是我觉得用字符串传递user/pass不是很好。
1条答案
按热度按时间yqhsw0fo1#
您是否查看过令牌模拟级别?MSDN: TokenImpersonationLevel