加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:08:57 所属栏目:Java 来源:网络整理
导读:我正在尝试向我的RESTful Web服务添加BASIC身份验证.目前我对Apache Tomcat 6.0服务器进行BASIC身份验证,但我需要在WebSphere应用程序服务器上部署我的Web服务. 6.1以及我在WebSphere上运行BASIC身份验证时遇到问题. 在Java中是否有办法检查HTTP请求的身份验
我正在尝试向我的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容器都有一种配置过滤器链的标准方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读