JAVA中HTTP基本认证(Basic Authentication)实现
作者:sayyy
HTTP 基本认证是一种简单的认证方法,本文主要介绍了JAVA中HTTP基本认证(Basic Authentication),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
什么是 HTTP 基本认证
HTTP 基本认证是一种简单的认证方法。客户端可以通过用户名和密码进行认证。这些凭证以特定的格式在 Authorization HTTP Header 中发送。一般它以 Basic 关键字开始,后面是一个 base64 编码的用户名:密码值。冒号字符在这里很重要。头部应该严格遵循这个格式。
例如,要用 javanorth 用户名和 http 密码进行认证,我们必须发送这个 Header。
Basic amF2YW5vcnRoOmh0dHA=
我们可以通过使用 base64 解码器和检查解码的结果来验证。
服务端这么做
- 服务端告知客户端使用 Basic Authentication 方式进行认证
- 服务端接收并处理客户端按照 Basic Authentication 方式发送的数据
服务端告知客户端使用 Basic Authentication 方式进行认证
- 服务端返回 401(Unauthozied)状态码给客户端
- 服务端在Response 的 header “WWW-Authenticate” 中添加信息
服务端接收并处理客户端按照 Basic Authentication 方式发送的数据
private boolean checkBasicAuthorization(HttpServletRequest request) { String rawStringAuthorization = request.getHeader("Authorization"); Assert.isTrue(StringUtils.startsWith(rawStringAuthorization, "Basic"), "Basic 认证失败"); String base64StringAuthorization = StringUtils.replaceOnce(rawStringAuthorization, "Basic", ""); base64StringAuthorization = StringUtils.trim(base64StringAuthorization); byte[] bytesAuthorization = Base64Utils.decodeFromString(base64StringAuthorization); String stringAuthorization = new String(bytesAuthorization); String[] arrUserAndPass = StringUtils.split(stringAuthorization, ":"); Assert.isTrue(2==arrUserAndPass.length, "Basic 认证失败"); String username = arrUserAndPass[0]; String password = arrUserAndPass[1]; if (StringUtils.equals(username, "myuser") && StringUtils.equals(password, "mypassword")) { return true; } return false; }
- org.apache.commons.lang3.StringUtils
- org.springframework.util.Base64Utils
客户端这么做
客户端按照 Basic Authentication 方式向服务端发送数据
如果客户端是浏览器
浏览器支持 Basic Authentication 方式认证。浏览器会自动弹出提示窗体,并自动向该地址发送认证请求。
浏览器自动弹出的对话框:
点击“登录”后,浏览器自动向该地址发送请求:
- 输入用户名:
myuser
,密码:mypassword
“bXl1c2VyOm15cGFzc3dvcmQ=”
=base64("myuser:mypassword")
如果客户端是 RestTemplat
@Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate() { RestTemplate restTemplate = new RestTemplate(); restTemplate.getInterceptors() .add(new BasicAuthenticationInterceptor("myuser","mypassword")); ; return restTemplate; } }
如果客户端是 HttpClient
略
其它
Basic Authentication 方式的认证,通常不需要登录页面,只需要登录Action即可。
参考
https://developer.atlassian.com/server/jira/platform/basic-authentication/
到此这篇关于JAVA中HTTP基本认证(Basic Authentication)的文章就介绍到这了,更多相关JAVA HTTP基本认证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!