客户端类型
虽然前面的部分着重于浏览器客户端,但是协议对于任何类型的客户端都是相同的。任何需要访问受保护的Web服务的客户端都要理解这个HTTP身份验证协议,并实现它以求通过身份验证。这个部分说明了如何传送来自各种类型客户端的身份验证信息。
MS Visual Basic 客户端
Microsoft为传输层提供HTTPConnector接口。它使用两个属性来传递证书--AuthUser 和AuthPassword。清单4显示了一个使用Visual Basic和MS SOAP Toolkit 2.0调用一个受保护的WebLogic Web服务的例子。
清单4
Set Client = New SoapClient
Client.mssoapinit "<WSDL URL>", "<Service Name in WSDL>", "<Port Name in WSDL>"
Connect
Client.ConnectorProperty("AuthUser") = <username>
Client.ConnectorProperty("AuthPassword") = <password>
Client.<Service(args)>
不应该把AuthUser 和AuthPassword与ProxyUser 和ProxyPassword相互混淆。它们用于为代理服务器提供证书(如果存在证书的话)。这种身份验证的工作方式是一样的,除了返回的错误号是407,而不是401。
Java客户端
WebLogic Server提供Java客户端库来访问受保护的资源。用户名和证书是使用"java.naming.security.principal"和 "java.naming.security.credentials"来传送的。清单5描述了Java客户端如何使用WebServiceProxy来调用一个受保护的WebLogic Web服务。
清单5
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.soap.http.SoapInitialContextFactory");
h.put("java.naming.security.principal", "<username>" );
h.put("java.naming.security.credentials", "<password>" );
Context context = new InitialContext(h);
WebServiceProxy proxy = (WebServiceProxy)context.lookup(<WSDL_URL>);
SoapMethod method = proxy.getMethod("<method name>");
method.invoke(new Object[]{"<args>"});
JAX-RPC客户端
JAX-RPC(Java API for XML-based remote procedure calls,用于基于XML的远程过程调用的Java API)是2002年6月发布的新标准,它定义了用于调用Web服务的API。WebLogic Server 7.0 支持 JAX-RPC。JAX-RPC接口"Stub"和 "Call"均支持属性”javax.xml.rpc.security.auth.username" 和 "javax.xml.rpc.security.auth.password",身份验证信息就是借助这两个属性进行传送的。您还可以使用静态常量Stub.USERNAME_PROPERTY 和Stub.PASSWORD_PROPERTY在调用服务之前设置安全性信息(参见清单6)。还可以在使用get<web service>port()获得端口的同时传送用户名和密码。
清单6
<Web Service Stub>._setProperty(Stub.USERNAME_PROPERTY, "<username>");
<Web Service Stub>._setProperty(Stub.PASSWORD_PROPERTY, "<password>");
MS C++ 客户端
类似地,您可以使用厂商提供的API编写C/C++客户端。MS SOAP工具包可以用于编写Windows平台上的C++客户端。用户名和密码是使用Connector Property进行传送的。下面是一个设置用户名和密码的例子。
Connector->Property["AuthUser"] =
"<UserName>";
Connector->Property["AuthPassword"] = "<Password>";
结束语
本文讨论了用于WebLogic Web服务和保护Web服务组件的身份验证。因为Web服务是涉及到不同技术的异构环境的自然选择,必须了解如何使用各种类型的客户端访问受保护的Web服务。
WiseCRM特点 -- 帮助企业提升竞争力
0
相关文章