2

我是 WCF 的新手,想知道是否可以做消息安全,我只为服务使用 x.509 证书,为客户端安全做 windows 凭据,这是可以接受的,它有效吗?尝试在网上搜索,但要么没有关于这种方法的讨论,要么我在我的谷歌搜索中输入了错误的措辞,非常感谢任何帮助,谢谢大家。

基本上,我的绑定中有这个:

<wsHttpBinding>
    <binding name="msgBinding">
        <security mode="Message">
            <message clientCredentialType="Windows" />
        </security>
    </binding>
</wsHttpBinding>

关于我的行为:

<behavior name="wsHttpCertificateBehavior">
    ...
    <serviceCredentials>
        <serviceCertificate findValue="MyCert" x509FindType="FindBySubjectName" storeLocation="CurrentUser" storeName="My" />
    </serviceCredentials>
</behavior>
4

2 回答 2

1

你为什么要这样做?您的安全要求是什么?

您是否尝试使用服务证书来保护消息传输,然后为客户端使用 Windows 安全性进行身份验证和授权?

Windows 安全性仅在您位于同一域中或设置了某种联合安全性时才有效。如果您在同一个域上,只需对两者都使用 Windows 安全性。如果您不在同一个域中,则不能为客户端使用 Windows 凭据,因为服务器将无法验证它们。您要么必须使用由服务端证书颁发机构颁发的客户端证书,要么使用自定义凭据。

但是,如果您在同一个域中但仍需要服务端证书,那么您必须在服务的配置文件中指定 serviceCertificate 并使用 HTTPS 定义端点地址,也就是说,如果您作为独立服务托管。如果您在 IIS 中托管,那么您可以在 IIS 网站的设置中定义证书。

您可能会发现这个有用的应用程序部署方案

于 2010-07-13T01:02:53.850 回答
0

嘿,谢谢你的帮助 Mogounus。我的问题很复杂,但简而言之,我的要求是在服务器端使用证书,在做了更多研究之后,我想我现在明白了。因此,如果我理解正确,当在具有消息安全性的客户端/服务器上使用证书时,客户端将使用其私钥对消息进行签名,然后附加其 pub 密钥,并使用服务器的 pub 密钥进行加密,只有服务器能够解密并因此获取签名消息以及客户端的 pub 密钥以验证签名数据。

就我而言,我让它工作了,我只需要验证该服务是否使用正确的东西来签名/加密,但这似乎不可能,因为当消息被打包时,它已经被加密并且我看不到内容。

我在寻找这个答案时意识到的另一个问题是,并不是我所有的客户都在同一个域中,所以必须在客户端使用用户/密码或证书。

于 2010-07-16T04:26:15.203 回答