- 论坛徽章:
- 0
|
导读:安全性是我们大多数客户优先考虑的问题。随着越来越多的客户采用Web服务,他们发现,他们需要了解如何保护Web服务,以及使用何种身份验证机制。为了保持Web服务的开放性并支持多种客户端类型,就必须了解如何处理Web服务的安全性问题。\r\n\r\n关键词:Web服务 安全性 WebLogic Web服务\r\n\r\n 客户端类型\r\n 虽然前面的部分着重于浏览器客户端,但是协议对于任何类型的客户端都是相同的。任何需要访问受保护的Web服务的客户端都要理解这个HTTP身份验证协议,并实现它以求通过身份验证。这个部分说明了如何传送来自各种类型客户端的身份验证信息。\r\n\r\n MS Visual Basic 客户端\r\n Microsoft为传输层提供HTTPConnector接口。它使用两个属性来传递证书--AuthUser 和AuthPassword。清单4显示了一个使用Visual Basic和MS SOAP Toolkit 2.0调用一个受保护的WebLogic Web服务的例子。\r\n\r\n 清单4\r\n\r\n Set Client = New SoapClient \r\n Client.mssoapinit \"<WSDL URL>\", \"<Service Name in WSDL>\", \"<Port Name in WSDL>\"\r\n Connect\r\n Client.ConnectorProperty(\"AuthUser\") = <username>\r\n Client.ConnectorProperty(\"AuthPassword\") = <password>\r\n Client.<Service(args)>\r\n\r\n 不应该把AuthUser 和AuthPassword与ProxyUser 和ProxyPassword相互混淆。它们用于为代理服务器提供证书(如果存在证书的话)。这种身份验证的工作方式是一样的,除了返回的错误号是407,而不是401。\r\n\r\n Java客户端\r\n WebLogic Server提供Java客户端库来访问受保护的资源。用户名和证书是使用\"java.naming.security.principal\"和 \"java.naming.security.credentials\"来传送的。清单5描述了Java客户端如何使用WebServiceProxy来调用一个受保护的WebLogic Web服务。\r\n\r\n 清单5\r\n\r\n Properties h = new Properties();\r\n h.put(Context.INITIAL_CONTEXT_FACTORY,\r\n \"weblogic.soap.http.SoapInitialContextFactory\");\r\n h.put(\"java.naming.security.principal\", \"<username>\" );\r\n h.put(\"java.naming.security.credentials\", \"<password>\" );\r\n Context context = new InitialContext(h);\r\n WebServiceProxy proxy = (WebServiceProxy)context.lookup(<WSDL_URL>);\r\n SoapMethod method = proxy.getMethod(\"<method name>\");\r\n method.invoke(new Object[]{\"<args>\"});\r\n\r\n JAX-RPC客户端\r\n 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()获得端口的同时传送用户名和密码。\r\n\r\n 清单6\r\n\r\n <Web Service Stub>._setProperty(Stub.USERNAME_PROPERTY, \"<username>\");\r\n <Web Service Stub>._setProperty(Stub.PASSWORD_PROPERTY, \"<password>\");\r\n\r\n MS C++ 客户端\r\n 类似地,您可以使用厂商提供的API编写C/C++客户端。MS SOAP工具包可以用于编写Windows平台上的C++客户端。用户名和密码是使用Connector Property进行传送的。下面是一个设置用户名和密码的例子。\r\n\r\n Connector->Property[\"AuthUser\"] =\r\n \"<UserName>\";\r\n Connector->Property[\"AuthPassword\"] = \"<Password>\";\r\n\r\n 结束语\r\n 本文讨论了用于WebLogic Web服务和保护Web服务组件的身份验证。因为Web服务是涉及到不同技术的异构环境的自然选择,必须了解如何使用各种类型的客户端访问受保护的Web服务。 |
|