在web服务调用中使用用户名和密码
问题描述:
我正在编写java web服务,它在调用响应之前需要从调用者接受用户名和密码以进行内部身份验证。这样做的标准方式(或最佳实践)是什么?它是在SOAP头中还是应该作为消息参数之一提供?我在哪里可以找到代码示例?谢谢。在web服务调用中使用用户名和密码
答
用户名和密码通常以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)
方法中调用此方法。
答
的使用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头。
答
我喜欢这些类型的东西的java5 EE教程,有代码示例和资源链接。 http://download.oracle.com/javaee/5/tutorial/doc/bncbx.html
另一个非常好的网站更安全的事情更深入的一面是:OWasp在:https://www.owasp.org/index.php/Main_Page他们是网络安全专家在恕我直言。我们最近在一家银行使用过他们的api。
HTH, James
您正在使用哪个WS协议栈? – Santosh