JAVA 中 HTTP 基本认证(Basic Authentication)

目录

  • 服务端这么做
    • 服务端告知客户端使用 Basic Authentication 方式进行认证
    • 服务端接收并处理客户端按照 Basic Authentication 方式发送的数据
  • 客户端这么做
    • 如果客户端是浏览器
    • 如果客户端是 RestTemplat
    • 如果客户端是 HttpClient
  • 其它
  • 参考

服务端这么做

  1. 服务端告知客户端使用 Basic Authentication 方式进行认证
  2. 服务端接收并处理客户端按照 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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/634146.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

白鲸开源CEO郭炜在2024 DataOps发展大会上获聘专家

2024年5月15日,白鲸开源CEO郭炜在2024 DataOps发展大会上被正式聘任为DataOps专家,并获得了荣誉证书。本次大会由中国通信标准化协会主办,中关村科学城管委会提供支持,大数据技术标准推进委员会(CCSATC601)…

事务的ACID是什么及扁平化事务、链式事务

一、什么是事务 1.事务(Transaction)是区别于数据库文件系统的重要特性之一。事务会把数据库从一种一致状态转换为另一种一致状态。在数据库提交工作时,可以确保要么所有修改都已经保存,要么所有修改都不保存。 2.InnoDB存储引擎中的事物完…

汽车展厅应用客流统计,洞察客户规律,完成热门车型分析

在汽车展厅中,客流统计正逐渐成为一项不可或缺的重要工具,它帮助我们洞察客户规律,从而能够更好地完成热门车型分析。 一、客流统计-客户画像分析 客流统计下的客户画像构建为我们提供了深入了解客户的途径。通过对进入展厅的人群进行细致分析…

两步将 CentOS 6.0 原地升级并迁移至 RHEL 7.9

《OpenShift / RHEL / DevSecOps 汇总目录》 说明 本文介绍如何将一个 CentOS 6.0 的系统升级并转换迁移到 RHEL 7.9。 本文是《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》阶进篇。 所有被测软件的验证操作可参见上述前文中对应章节的说明。 准备 CentOS 6.…

【附带效果视频】php接口给前端返回流式数据,php使用event-stream进行数据推送,循环一次输出一次

背景:不分接口需要返回流式数据,循环一次输出一次数据 php接口给前端返回流式数据,循环一次输出一次 返回结果效果视频完整返回结果数据格式控制台网络内查看到的数据格式完整代码 返回结果效果视频 php接口给前端返回流式数据,循…

软考高级-信息系统项目管理师案例题选择题做题总结

1.不应该只会建立变更和配置管理的规则,应该建立变更控制流程 2.变更的影响不应该只由工程师评估 3.没有对变更和修改进行记录 4.变更完成后,客户没有对变更进行验证 5.变更没有通知相关人员 6.变更没有和配置管理关联 7.项目变更管理的工作流程&#xf…

向郭老师学习研发项目管理

学习研发项目管理思路 通过以下思路来学习研发项目管理: 1、研发项目管理分3级 2、研发项目管理分4类 3、研发项目管理分5大过程组 4、新产品开发项目生命周期分6个阶段 5、研发项目管理分10大知识体系 项目组合、项目集、简单项目3级管理 针对Portfolio组合…

MGRE实验——路由配置

对134环回 ping一下发现都可以通 配置3,4同3 再注册 然后内网要互通,起rip 宣告1的左边和右边 对3 对4 当3,4之间要互通时,首先在1上 关闭之后,3就能学到4上的用户网段,4也能学到3 局域网要访问广域网一定…

智能进化:让AI大模型变得更聪明的路径探索

前言 随着人工智能(AI)技术的飞速发展,大模型在多个领域展现出了前所未有的能力。然而,它们仍然面临着理解力、泛化能力和适应性等方面的挑战。如何让大模型变得更聪明,是当前AI研究和应用的一个重要课题。本文将探讨…

【最全的excel转json!!!】使用Python脚本提取excel文本中的数据到json中

比如说:我有一个1.xlsx的文件需要转成对应的json格式。 1) excel 文件的大概内容: 2)保存的方式类似于以下这种情况: 用Python脚本来实现 import pandas as pd import json# 读取Excel文件 excel_path r"D:…

创建型设计模式之建造者模式

文章目录 概述定义建造者模式原理结构图小结 概述 建造者模式又被称为生成器模式,是一种创建型设计模式。 和之前的单例,工厂一样,同属于创建型设计模式。 定义 建造者模式是将一个复杂对象的构建与表示分离,使得同样的构建过程…

春秋云境CVE-2023-50564

简介 Pluck-CMS v4.7.18 中的 /inc/modules_install.php 组件,攻击者可以通过上传一个精心制作的 ZIP 文件来执行任意代码。 正文 1.进入靶场 2.弱口令进入 admin123 3.找上传点 4.将木马打包,上传一句话木马 5.蚁剑连接6.得到flag

韵搜坊 -- 项目优化点

文章目录 搜索建议搜索高亮前端防抖节流接口稳定性优化 搜索建议 https://www.elastic.co/guide/en/elasticsearch/reference/7.17/search-suggesters.html GETpost_v1/_search {"query": {"match": {"content" "鱼皮不欠费" }},&qu…

高中数学:平面向量-正交分解、坐标表示、坐标运算

一、正交分解 二、坐标表示 这里注意一点 坐标A(x,y)与向量 a → \mathop{a}\limits ^{\rightarrow} a→的坐标记作: a → \mathop{a}\limits ^{\rightarrow} a→(x,y),表示方式的区别 引申 三、加减运算的坐标表示 四、数乘运算的坐标表示 引申 两向量…

MySQL的ODBC驱动下载、安装以及配置数据源

下载地址:odbc官方下载地址 MySQL :: Download Connector/ODBC 下载安装ODBC驱动 配置MySQL ODBC 数据源 进入控制面板->系统和安全->Windows工具 Data Source Name填写需要生成的ODBC数据源的名称。Description选填。如果使用远程数据库服务器&a…

基于Nacos实现Sentinel规则持久化

基于Nacos实现Sentinel规则持久化 一、Sentinel使用痛点二、解决方案2.1 保存本地文件2.2 保存数据库2.3 保存到Nacos 三、规则持久化到Nacos3.1 Nacos服务端修改配置3.2 Sentinel控制台修改配置3.3 Nacos数据源整合到Sentinel中 一、Sentinel使用痛点 SpringCloudAlibaba帮我…

装本地知识库

装本地知识库 给大模型添加RAG知识库和搜索的功能 1.安装phidata pip install -U phidata在github将该项目拉取下来,后续步骤的很多内容可以直接使用该项目中给的例子,进行简单修改就可直接使用。 2.安装向量知识库,使用的docker docker …

Java多线程——继承Thread类

自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用start()方法启动线程 代码演示: //创建线程方式一:继承Thread类,重写run()方法,调用start开启线程 public class TestThrea…

weblogic简介

WebLogic是美国Oracle公司出品的一个Application Server,它是一个基于JAVA EE架构的中间件。WebLogic主要用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。它将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的…

OGG几何内核-BRepBuilderAPI_MakeEdge学习

OGG几何内核fork自OCCT 7.7.0, BRepBuilderAPI_MakeEdge是几何内核的一个重要和基础的功能,也十分复杂,因为要支持line、circle、ellipse,parabola,hyperbola,circle,beziercurve,b…