如何在java中处理基本身份验证

时间:2014-03-18 15:41:04

标签: java rest basic-authentication

我得到一个REST网址,它以Basic username@domain:password格式的标头传入基本身份验证信息,这是基本编码的。 在我的java代码中,我如何实际验证凭据。我在Websphere服务器上部署了一个EAR。我应该解码base 64格式标头并将凭证与jndi变量中的凭证进行比较吗? (我想我对基本Auth本身的实际流程感到困惑。)
感谢

1 个答案:

答案 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。更多细节可以在这里找到:

http://www.journaldev.com/1945/servlet-listener-example-servletcontextlistener-httpsessionlistener-and-servletrequestlistener