0

我创建了一个带有 SAML 实现的 Wcf 服务。我正在使用联邦绑定。当我在同一台机器上同时运行客户端和主机服务时,我可以从我的客户端应用程序轻松访问托管在我的 WCF Web 服务上的服务。我已使用证书进行身份验证(SAML 实施)。

为了您的信息,我在客户端有自定义模块,它充当身份提供者。主机服务只有一些使用 wsfederationbinding公开的功能。

现在的问题是,当我在不同系统上运行 WCF 服务主机和在不同系统上运行客户端应用程序(具有身份提供者的消费者)时,我收到以下错误消息

  MessageSecurityException: The EncryptedKey clause was not wrapped with the required encryption token 'System.IdentityModel.Tokens.X509SecurityToken'.

注意:我觉得客户端和主机服务之间的证书不匹配

4

1 回答 1

1

我已经解决了上述问题,实际上上述错误的根本原因是证书不匹配。我在 SAML 论坛之一上阅读了有关SAML 证书身份验证程序的内容,其中说

  1. 令牌使用客户端的公共证书加密。
  2. 在服务器端(在我的例子中是 Web 服务主机)接收到的令牌是使用证书的私钥解密的。

因此,在我的情况下,客户端的证书与服务器端的证书不同。

解析度 :

只需从服务器端(在我的情况下为 Web 服务主机)导出证书并在客户端导入相同的证书。

注意:存在2个证书,客户端证书和服务器证书在双方(客户端和服务器端)。所以实际上,当客户端想要(动态)访问主机 Web 服务时,就像下载应用程序一样,我们需要在服务端创建两个证书,并在激活客户端应用程序时将这些证书部署到客户端。这样证书将是同步中。

于 2013-02-14T14:30:48.733 回答