JAVA中HTTP基本认证(Basic Authentication)实现

 更新时间:2024年07月15日 10:04:42   作者: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基本认证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring事务原理解析

    Spring事务原理解析

    Spring事务有可能会提交,回滚、挂起、恢复,所以Spring事务提供了一种机制,可以让程序员来监听当前Spring事务所处于的状态,这篇文章主要介绍了Spring底层事务原理,需要的朋友可以参考下
    2022-12-12
  • java学习粗略路线的方法

    java学习粗略路线的方法

    下面小编就为大家带来一篇java学习粗略路线的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • Spring boot整合dubbo+zookeeper的详细过程

    Spring boot整合dubbo+zookeeper的详细过程

    本文讲解Spring Boot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、启动类注解、服务注册与调用步骤,及QoS、超时、负载均衡等参数设置,确保分布式服务通信正常运行,感兴趣的朋友一起看看吧
    2025-07-07
  • java反射原理制作对象打印工具

    java反射原理制作对象打印工具

    本文主要给大家介绍了java反射原理制作对象打印工具的方法和代码,以及一个热心网友给出的更加简洁方便的代码,小伙伴们需要的话可以参考下。
    2015-12-12
  • 基于IDEA2018卡死不动的解决方式(好用)

    基于IDEA2018卡死不动的解决方式(好用)

    这篇文章主要介绍了基于IDEA2018卡死不动的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • SpringBoot中获取微信用户信息的方法

    SpringBoot中获取微信用户信息的方法

    这篇文章主要介绍了SpringBoot中获取微信用户信息的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Springboot项目快速实现过滤器功能

    Springboot项目快速实现过滤器功能

    上篇文章已经给大家介绍了Springboot项目如何快速实现Aop功能,这篇文章给大家介绍Springboot项目如何快速实现过滤器功能,感兴趣的小伙伴可以参考阅读
    2023-03-03
  • struts2框架入门

    struts2框架入门

    本文主要介绍了struts2框架的基础入门知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • sms4j 2.0 全新来袭功能的调整及maven变化详解

    sms4j 2.0 全新来袭功能的调整及maven变化详解

    这篇文章主要介绍了sms4j 2.0 全新来袭功能的调整及maven变化详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 详解JAVA 弱引用

    详解JAVA 弱引用

    这篇文章主要介绍了 JAVA 弱引用的相关资料,帮助大家更好的理解和学习java引用对象,感兴趣的朋友可以了解下
    2020-08-08

最新评论