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容器都有一种配置过滤器链的标准方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |