在Web服务调用中使用用户名和密码

时间:2011-09-19 18:40:53

标签: java web-services security

我正在编写java Web服务,需要接受来自调用者的用户名和密码以进行内部身份验证,然后再提供响应。这样做的标准方法(或最佳实践)是什么?它是在SOAP标头中还是应该作为消息参数之一提供?我在哪里可以找到代码示例?谢谢。

3 个答案:

答案 0 :(得分:1)

提供用户名和密码的标准方法是使用WS-Security,它在SOAP标头中提供安全信息:

<SOAP-ENV:Header>
  <wsse:Security SOAP-ENV:mustUnderstand="1"
    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <wsse:UsernameToken 
      wsu:Id="UsernameToken-29477163"
      xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
      <wsse:Username>username</wsse:Username>
      <wsse:Password>verySecret</wsse:Password>
    </wsse:UsernameToken>
  </wsse:Security>
</SOAP-ENV:Header>

WSS4J实现了Java的WS-Security标头。

答案 1 :(得分:0)

用户名和密码通常作为http头中的部分发送.JAX-WS提供常量USERNAME_PROPERTY和PASSWORD_PROPERTY,以便在服务器上轻松处理这些属性。您必须编写一个http处理程序来访问这些值。

void authenticate(HttpExchange ex){
  Headers headers = ex.getRequestHeaders();
 headers.get(BindingProvider.USERNAME_PROPERTY)
 headers.get(BindingProvider.PASSWORD_PROPERTY)
}

从Httphandler的public void handle(HttpExchange ex)方法调用此方法。

答案 2 :(得分:0)

我喜欢这些东西的java5 EE教程,有代码示例和资源链接。 http://download.oracle.com/javaee/5/tutorial/doc/bncbx.html

更深入的安全方面的另一个非常好的网站是:OWasp at:https://www.owasp.org/index.php/Main_Page他们是网络安全恕我直言的专家。我们最近在一家银行使用了他们的api。

HTH, 詹姆斯