我得到一个REST网址,它以Basic username@domain:password
格式的标头传入基本身份验证信息,这是基本编码的。
在我的java代码中,我如何实际验证凭据。我在Websphere服务器上部署了一个EAR。我应该解码base 64格式标头并将凭证与jndi变量中的凭证进行比较吗?
(我想我对基本Auth本身的实际流程感到困惑。)
感谢
答案 0 :(得分:3)
在web.xml中,您可以定义服务器应如何验证这些凭据的模式:
要处理基本身份验证,您必须配置它:
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>default</realm-name>
</login-config>
现在,您可以通过安全限制来保护您的服务,例如:
<security-constraint>
<display-name>excluded</display-name>
<web-resource-collection>
<web-resource-name>No Access</web-resource-name>
<url-pattern>/rest/*</url-pattern>
<http-method>DELETE</http-method>
<http-method>PUT</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint />
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
有关详细信息,请阅读以下教程: http://java.dzone.com/articles/understanding-web-security
Java EE教程还讨论了安全性: http://docs.oracle.com/javaee/6/tutorial/doc/bncas.html
您还可以实现ServletRequestListener并从请求中获取Basic Header。更多细节可以在这里找到: