【发布时间】:2011-04-03 12:20:22
【问题描述】:
我有一个安全的 METRO 2.1 Web 服务,我想开发一个可以使用它的 .NET (3.5) 客户端。如果 WS 不安全,我已经成功了,但是一旦我得到了
安全机制是Username Authentication with Symmetric Key,它使用Development Defaults
如何在 .NET 中设置安全性?我一直在阅读 METRO 指南,但我只发现了示例的断开链接,并且指南没有让我通过。我用svcutil成功生成了一个代理类,但是不知道怎么用。
svcutil 警告:
警告 1 自定义工具警告:已为端点导入安全策略。安全策略包含无法在 Windows Communication Foundation 配置中表示的要求。在生成的配置文件中查找有关 SecurityBindingElement 参数的注释。使用代码创建正确的绑定元素。配置文件中的绑定配置不安全。
警告 2 自定义工具警告:wsam:Addressing 元素需要 wsp:Policy 子元素,但没有子元素。
编辑
我已经非常接近解决这个问题(我认为)。我使用keytool.exe 导出了默认的 GlassFish 证书:
keytool -exportcert -alias xws-security-server -storepass changeit -keystore keystore.jks -file server.cer
keytool -printcert -file server.cer //This line shows it's content
我在客户端使用server.cer 证书:
KDTreeWSClient wsClient = new KDTreeWSClient();
X509Certificate2 server_cert = new X509Certificate2("FullPathToCertificate/server.cer", "changeit");
wsClient.ClientCredentials.ServiceCertificate.DefaultCertificate = server_cert;
wsClient.ClientCredentials.UserName.UserName = "wsitUser"; //Default GF username
wsClient.ClientCredentials.UserName.Password = "changeit"; //Default GF password
问题这会导致 MessageSecurityException,因为端点的预期 DNS 身份是 localhost,但端点有 xwssecurityserver。我可以手动设置为localhost/xwssecurityserver吗?
任何帮助将不胜感激! 提前致谢, 丹尼尔
【问题讨论】:
-
这是一个似乎讨论类似情况的链接:forums.asp.net/t/1277956.aspx
标签: java .net wcf jax-ws java-metro-framework