揭开WebLogic Web服务安全性的面纱(三)

日期: 2007-12-22 作者:Anbarasu Krishnaswamy 来源:TechTarget中国

  客户端类型

  虽然前面的部分着重于浏览器客户端,但是协议对于任何类型的客户端都是相同的。任何需要访问受保护的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服务。

 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐