Http Basic 认证

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 Http Basic 认证,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

概述

当用户发送请求来到Http服务器进行Http Basic认证时,如果之前没有认证过,那么提示用户输入用户名和密码,如果正确,用户名和密码会经过base64编码后追加到请求头信息中再次请求服务器,服务器会根据请求头中携带的认证信息,来判断此次认证是否成功,此后,用户每次访问服务器的任何资源都会携带该请求头,不管资源是否受限

案例

下面我们通过代码来实现Http Basic认证

项目结构

在这里插入图片描述

配置web.xml

实例:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">

	<!-- Basic认证配置 -->
	<security-constraint>
		<!-- 配置受限资源 -->
		<web-resource-collection>
			<web-resource-name>Basic Auth Test</web-resource-name>
			<url-pattern>/auth.html</url-pattern>
			<url-pattern>/demo01</url-pattern>
		</web-resource-collection>

		<!-- 访问受限资源所要提供的权限 -->
		<auth-constraint>
			<role-name>emp</role-name>
		</auth-constraint>
	</security-constraint>

	<login-config>
		<!-- 认证的方式 -->
		<auth-method>BASIC</auth-method>
		<realm-name>please accept Http Basic Authentication</realm-name>
	</login-config>

</web-app>
  • web-resource-name:给认证取个名字
  • url-pattern:受限的资源(需要认证才可以访问的资源)
  • role-name:访问受限资源所需的权限
  • auth-method:认证的方式(这里使用的是Basic)
  • realm-name:认证时的提示语

修改Tomcat安装目录下的/conf/tomcat-users.xml配置文件,添加角色与用户

<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">

    <!-- 创建一个权限 -->
    <role rolename="emp"/>
    
    <!-- 配置用户,给用户赋予emp权限 -->
    <user username="wsir" password="admin" roles="emp"/>

</tomcat-users>

此时访问 demo01和auth.html都需要认证才可以访问

测试案例

访问请求:http://localhost:8080/auth.html
在这里插入图片描述
浏览器一直处于等待输入状态,点击取消后,响应状态如下:
在这里插入图片描述
在响应头中有一句我们刚刚设置的提示:

WWW-Authenticate: Basic realm="please accept Http Basic Authentication"

刷新页面,再次认证,输入在Tomcat中配置的正确的用户名和密码,认证成功
再次访问任意页面(无论是否受限页面),都会携带用户名和密码信息,信息如下:
在这里插入图片描述
该密文是 用户:密码的格式 经过base64编码后的结果
我的用户名密码编码后的是这个,大家也可以拿去解码一下:

d3NpcjphZG1pbg==

解码如下:
在这里插入图片描述
当然也可以使用代码解码:

@Test
public void decode(){

    String code="d3NpcjphZG1pbg==";
	// 注意:Base64这个类是jdk1.8的!
    byte[] decodeByte = Base64.getDecoder().decode(code);

    System.out.println(new String(decodeByte));
}

总结

Http Basic认证方式操作方式简单,但是安全性不够高,当认证通过时,每次请求资源都会携带用户名和密码,而且用户名和密码仅是通过base64编码,这其实和明文差不多,适用于安全性要求不高的场景

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131856.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!