注意:已构建github repo来演示导致这些问题的问题。
在创建WIF安全WCF服务时,MSDN文档建议使用Visual Studio的身份和访问工具。在服务项目上运行该工具后,以下节点将添加到web.config [commit 0472287]:
<ws2007FederationHttpBinding>
<binding name="">
<security mode="Message">
<message>
<issuerMetadata address="https://localhost/adfs/services/trust/mex" />
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
身份工具添加了错误的issuerMetadata地址,根本不包括issure节点。值得庆幸的是,所有引用证书指纹的节点都是正确创建的。向此服务的客户端项目添加服务引用会导致客户端上的配置无效。在如下更改消息节点的内容后,创建对服务的服务引用会留下几乎可用的客户端(请参阅第二个问题)[commit 758052d]。
<message>
<issuer address="https://localhost:44300/issue/wstrust/mixed/username" binding="ws2007HttpBinding" bindingConfiguration="" />
<issuerMetadata address="https://localhost:44300/issue/wstrust/mex" />
</message>
第一个问题在设置导致绑定未正确配置的身份工具时,我做错了吗?生成的地址在STS FederationMetadata.xml文件中不存在,因此我不确定它的来源。
正确配置服务后,客户端的服务参考几乎即插即用。出于某种原因,它没有在WS2007FederationHttpBinding中为发行者指定绑定配置。添加绑定并为WIF客户端创建绑定配置以获取令牌将导致客户端处于工作状态[commit 39a4cbc]。
第二个问题更新服务web.config允许自动生成其余的客户端配置。我是否遗漏了客户端还要自动配置绑定的内容?
所有这些缺失的元素都可以在IdentityMetadata.xml文件中查找,该文件是身份工具所需要的,以及两个项目都知道的FederationMetadata服务。似乎应该有一些东西可以使这些配置正确而无需人工干预。
注意:已构建github repo来演示导致这些问题的问题。