java – 是否有与服务器无关的方式来实现BASIC身份验证?

前端之家收集整理的这篇文章主要介绍了java – 是否有与服务器无关的方式来实现BASIC身份验证?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试向我的RESTful Web服务添加BASIC身份验证.目前我对Apache Tomcat 6.0服务器进行BASIC身份验证,但我需要在WebSphere应用程序服务器上部署我的Web服务. 6.1以及我在WebSphere上运行BASIC身份验证时遇到问题.

Java中是否有办法检查HTTP请求的身份验证标头,如果提供的用户名/密码(以Base64编码)与已知帐户不匹配,则用户输入新的用户名/密码?

我已经尝试过实现Spring Security,但由于我的项目完全没有Spring,所以试图让它工作是一件巨大的痛苦,我试图找到一个简单的解决方案来解决我的相当简单的问题.

我目前使用的技术包括:Java,Jersey / JAX-RS,带Maven插件Eclipse.

解决方法

您应该能够设置一个在REST处理程序之前执行的 servlet filter,检查“授权”请求标头,base 64 decodes它,提取用户名和密码,并进行验证.像这样的东西:
public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) {
  if (request instanceof HttpServletRequest) {
    HttpServletRequest request = (HttpServletRequest) req;
    String authHeader = Base64.decode(request.getHeader("Authorization"));
    String creds[] = authHeader.split(":");
    String username = creds[0],password = creds[1];
    // Verify the credentials here...
    if (authorized) {
      chain.doFilter(req,res,chain);
    } else {
      // Respond 401 Authorization required.
    }
  }
  doFilter(req,chain);
}

所有servlet容器都有一种配置过滤器链的标准方法.

猜你在找的Java相关文章