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

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

  保护RPC风格的Web服务

  您可以限制对RPC风格的Web服务的访问,具体方法是限制对实现Web服务或SOAP servlet的无状态会话EJB的访问。清单2和3显示了如何设置web.xml和weblogic.xml文件以保护SOAP servlet。确保客户端仍然能够访问WSDL文件。为了确保这一点,应避免使用通配符映射;而是显式地保护SOAP servlet适配器路径。这两个清单提供了一个如何保护帐户管理程序代理Web服务的例子。正如您所看到的那样,角色是在web.xml中定义的,并与域中的组相关联。

  清单2

  <security-constraint>
  <web-resource-collection>
  <web-resource-name> Weather</web-resource-name>
  <url-pattern>/weatherturi/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
  <role-name>Admin</role-name>
  </auth-constraint>
  </security-constraint>
  <login-config>
  <auth-method>BASIC</auth-method>
  </login-config>
  <security-role>
  <role-name>Admin</role-name>
  </security-role>

  清单3

  <security-role-assignment>
  <role-name>Admin</role-name>
  <principal-name>system</principal-name>
  </security-role-assignment>

  Web 服务客户端

  为了理解如何处理Web服务客户端的安全性问题,必须要理解SOAP和HTTP身份验证的工作方式。

  SOAP身份验证

  Web服务使用SOAP协议,它是以一些底层传输机制为基础而实现的高级消息传送协议。Web服务安全性仍然是一个新兴领域,围绕SOAP规范出现了一些扩展,以支持安全功能。当前,SOAP使用的是针对身份验证的底层传输协议基础架构。所以,WebLogic Server SOAP间接地使用了HTTP 1.1身份验证。

  HTTP身份验证

  使用HTTP的用户身份验证方法十分简单。因为HTTP是一个无状态协议–也就是说,一旦请求完成之后,服务器不会记住关于该请求的任何信息–浏览器需要为每个请求重新发送用户名和密码(参见图1)。

  图1

  第一次访问需验证的资源时,服务器将返回401状态(“Unauthorized”),并包括一个WWW身份验证的响应头,用于指明所使用的域名和身份验证模式。然后,浏览器应该要求用户输入用户名和密码。接着,它再次请求同样的资源,这次包括了一个含有模式名(“Basic”)的身份验证头,以及输入的用户名和密码。服务器检查此用户名和密码,如果它们是有效的,就会返回相应的页面。如果密码对于该用户无效,或者用户没有访问权限,服务器还会像以前一样返回401状态。然后,浏览器可以要求用户尝试重新输入用户名和密码。

  假定用户名和密码有效,接下来用户可能会请求一个受保护的资源。在这种情况下,服务器将使用401状态作为响应,而浏览器能够使用用户和密码详细信息再次发送请求。这样做会很慢,然而对于随后的请求,浏览器就会改为发送身份验证头。要了解HTTP身份验证方面的更多信息,请参考W3C HTTP Working Group RFC 2617 (www.w3c.org/Protocols/Specs.html)。

 

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐