Tomcat内部是如何处理来完成BASIC应用认证的
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天小编给大家分享一下Tomcat内部是如何处理来完成BASIC应用认证的的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后
千家信息网最后更新 2026年11月02日Tomcat内部是如何处理来完成BASIC应用认证的
今天小编给大家分享一下Tomcat内部是如何处理来完成BASIC应用认证的的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
1. Authorization 请求头
在此之前,我们先来了解下请求头中的Authorization的具体作用,以下为RFC2616中对于authorization的定义:
A user agent that wishes to authenticate itself with a server--
usually, but not necessarily, after receiving a 401 response--
does so by including an Authorization request-header field with the
request. T
Authorization = "Authorization" ":" credentials
即在收到服务器返回401信息之后,用于向服务器传递认证的信息。
2. BASIC认证
对于HTTP的安全认证方式,有以下几种实现形式:
BASIC
FORM
DIGEST
SSL
在输入用户名和密码之后,实际上传到Tomcat的是这样一个内容:
Basic dG9tY2F0OnRvbWNhdA==
这个字符串,空格前是当前认证使用的方式,空格后是用户名和密码的Base64编码,写到这里,大家应该会哦的一声,后台直接不就是Base64解码嘛。你说的对。是这样的
解码的代码如下:位于BasicAuthorization.authenticate()
// Validate any credentials already included with this request
MessageBytes authorization =
request.getCoyoteRequest().getMimeHeaders()
.getValue("authorization"); //解析出请求头中的认证值
if (authorization != null) {
authorization.toBytes();
ByteChunk authorizationBC = authorization.getByteChunk();
BasicCredentials credentials = null;
try {
credentials = new BasicCredentials(authorizationBC); //具体解析用户名和密码的地方
String username = credentials.getUsername();
String password = credentials.getPassword();
//根据获得的数据进Realm认证
principal = context.getRealm().authenticate(username, password);
if (principal != null) {
register(request, response, principal,
HttpServletRequest.BASIC_AUTH, username, password);
return (true);
}
}
catch (IllegalArgumentException iae) {
if (log.isDebugEnabled()) {
log.debug("Invalid Authorization" + iae.getMessage());
}
}
}BasicCredentials构造函数:
/**
* Parse the HTTP Authorization header for BASIC authentication
* as per RFC 2617 section 2, and the Base64 encoded credentials
* as per RFC 2045 section 6.8.
*
* @param input The header value to parse in-place
*
* @throws IllegalArgumentException If the header does not conform
* to RFC 2617
*/
public BasicCredentials(ByteChunk input)
throws IllegalArgumentException {
authorization = input;
initialOffset = input.getOffset();
parseMethod();
byte[] decoded = parseBase64();
parseCredentials(decoded);//这里提取}
这就是Basic的Authorization请求头提取过程。PostMan做的就是在请求前先把用户名和密码的信息添加到请求头中。
如果你看完本文会打开代码尝试一下的话,Tomcat的Manager应用就是个样例。其也是通过BASIC完成认证的。
3. 应用
我们一般的应用如何配置还使用BASIC认证呢?
需要做的就是在web.xml中声明如下片段
BASIC
Tomcat Manager Application
此时即为应用使用BASIC认证了。但如果这个时候你急忙去试的话,一定是不起作用的。因为你没说明哪些资源要保护啊!
还需要单独声明哪些资源保护,例如下面的配置片段
上面声明具体的受保护的请求路径,对应使用的角色等。配置的更多内容可以参考Manager应用,我们不再多谈。
4. 为什么
我们上面提到HTTP的认证方式有许多种,Tomcat也都有对应的实现。
那在web.xml中配置了BASIC之后,是怎么和具体BASIC认证的代码对应起来的呢?
实际上实现原理是这个样子的:
上面列表中所示的这些认证方式,对应到Tomcat中,是以一个Valve的形式实现。这个具体每个应用添加哪个对应认证方式的Valve,就是通过解析web.xml中配置的auth-method,判断具体方式来实现的。
以上就是"Tomcat内部是如何处理来完成BASIC应用认证的"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
认证
应用
就是
方式
配置
内容
密码
用户
用户名
知识
篇文章
代码
信息
保护
作用
实际
实际上
形式
更多
服务器
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技工作委员会毛军
科技互联网项目
迪茉互联网科技
互联网科技股午盘股票涨跌
衡水科技产业互联网平台
小米互联网科技园设置
成都互联网科技公司工作好不好
恒生互联网科技指数跳水
浙南科技城互联网大厦建设工程
洛阳共同富裕互联网科技有限公司
互联网时代的科技公司
怎样加入科技互联网
山东星卡互联网科技有限公司官网
云南省自由互联网科技有限公司
广州百诚互联网科技有限公司官网
领航科技大厦互联网公司
银川新华互联网科技学校原画
米泉互联网科技专业怎么样
北京瑞云互联网科技有限公司
互联网科技企业文化
科技和互联网公司
互联网巨头科技公司
西安互联网科技
朗涯互联网科技
左右互联网络科技
云创客互联网科技公司
宁夏众和广鑫互联网科技有限公司
互联网5g黑科技有哪些
中国互联网十大科技股排名
保险科技服务互联网营销体系