WCF WsHttpBinding证书传输安全性-Windows证书配置

WCF WsHttpBinding证书传输安全性-Windows证书配置,wcf,wcf-security,Wcf,Wcf Security,我有两个使用WsHttpBinding和传输安全相互证书身份验证的WCF服务,它们托管在同一个windows服务器上。可以访问一个WCF服务的客户端不应该访问另一个WCF服务。我需要一些关于在windows主机上配置客户端证书的帮助。客户端证书由受信任的CA签名,并且中间和根证书链已安装在服务器上。看起来服务自动依赖于信任链,在允许客户端访问服务之前根本不需要在服务器上安装实际的客户端证书-这不是我想要的行为。有人能告诉我应该如何配置这些客户端证书,以便显式地允许访问一个服务而不是另一个服务吗

我有两个使用WsHttpBinding和传输安全相互证书身份验证的WCF服务,它们托管在同一个windows服务器上。可以访问一个WCF服务的客户端不应该访问另一个WCF服务。我需要一些关于在windows主机上配置客户端证书的帮助。客户端证书由受信任的CA签名,并且中间和根证书链已安装在服务器上。看起来服务自动依赖于信任链,在允许客户端访问服务之前根本不需要在服务器上安装实际的客户端证书-这不是我想要的行为。有人能告诉我应该如何配置这些客户端证书,以便显式地允许访问一个服务而不是另一个服务吗


谢谢。

这与证书本身无关。当使用相互SSL身份验证时,证书仅用于对客户端进行身份验证,并且身份验证在应用程序外部完成(这与可以创建自定义证书验证器的消息安全性不同)。一旦证书被信任,客户端将使用证书进行身份验证,自动对服务器上的任何内容进行身份验证


您正在寻找授权—定义经过身份验证的客户端可以对您的服务做什么的步骤。您可以使用将授权逻辑硬编码到服务中,也可以实现两个自定义s并将每个s分配给单个服务。

这与证书本身无关。当使用相互SSL身份验证时,证书仅用于对客户端进行身份验证,并且身份验证在应用程序外部完成(这与可以创建自定义证书验证器的消息安全性不同)。一旦证书被信任,客户端将使用证书进行身份验证,自动对服务器上的任何内容进行身份验证


您正在寻找授权—定义经过身份验证的客户端可以对您的服务做什么的步骤。您可以使用将授权逻辑硬编码到服务中,也可以实现两个自定义s并将每个s分配给单个服务。

谢谢您的回答。因此,看起来我必须编写代码以限制对所需证书的访问。在这种情况下,我计划编写一个SAM,并让本地配置基于证书指纹指定授权客户端。您能告诉我什么是在运行时确定经过身份验证的客户端证书指纹的正确方法吗?您熟悉证书信任列表(CTL)吗?我可以配置一个CTL来实现结果吗?它应该在
ClaimSet
中,您可以使用类似
set.FindClaims(ClaimTypes.Thumbprint,Rights.Identity)
的东西,并且您应该获得所有带有证书指纹的声明。如果您的服务都位于不同的站点,CTL可能也可以工作(=不同的TCP端口)。再次感谢您的快速回复。我深入研究了CTL,从我阅读的内容来看,它似乎只适用于添加受信任的根/中间CA,而不是最终客户端证书。您能确认或拒绝这一点吗?感谢ladislav的回答。因此,看起来我必须编写代码以限制对所需证书的访问s、 在这种情况下,我计划编写一个SAM,并让本地配置根据证书指纹指定授权客户端。您能告诉我在运行时确定经过身份验证的客户端证书指纹的正确方法吗?您熟悉证书信任列表(CTL)吗?我可以配置CTL来实现结果吗?它应该在
ClaimSet
中,您将使用类似
set.FindClaims(ClaimTypes.Thumbprint,Rights.Identity)的东西,并且您应该获得带有证书指纹的所有声明。如果您的服务都位于不同的站点,CTL可能也可以工作(=不同的TCP端口)。再次感谢您的快速回复。我深入研究了CTL,从我阅读的内容来看,它似乎只适合添加受信任的根/中间CA,而不是最终客户端证书。您能确认或拒绝这一点吗?