我已经用SAML实现创建了一个Wcf服务。我使用的联邦绑定为同样。从我的客户端应用程序中,当我在同一台机器上运行客户机和主机服务时,我能够轻松地访问我的WCF web服务上承载的服务。我使用证书进行身份验证(SAML实现)。
关于您的信息,我在客户端有自定义模块,它充当身份提供者。主机服务只是具有一些使用wsfederationbinding.公开的功能。
现在的问题是,当我在不同的系统上运行我的WCF服务主机和在不同的系统上运行客户端应用程序(身份提供者为使用者)时,我将得到以下错误消息
MessageSecurityException: The EncryptedKey clause was not wrapped with the required encryption token 'System.IdentityModel.Tokens.X509SecurityToken'.注意:我觉得客户端和主机服务之间存在某种不匹配的证书内部。
发布于 2013-02-14 14:30:48
我已经解决了上面的问题,其实造成上述错误的根本原因是证书错配。我在一个SAML论坛上读到了关于SAML证书身份验证过程的文章。
因此,在我的例子中,客户端的证书与服务器端的证书不同。
决议:
只需从服务器端导出证书(在我的例子中是Webservice主机),并在客户端导入相同的证书。
注:双方(客户端和服务器端)均有2种证书,客户端证书和服务器证书。因此,实际上,当客户机想要访问主机web服务(动态)时,就像下载应用程序一样,我们需要在服务端创建两个证书,并在激活客户端app.this时将这些证书部署到客户端。
https://stackoverflow.com/questions/14750983
复制相似问题