Tomcat - 设置 HTTP 基本认证
在 Tomcat 中设置 HTTP 基本认证的示例
- 在 $TOMCAT_HOME\conf\tomcat-users.xml 文件中配置角色和用户:
<tomcat-users>
<role rolename="all"/>
<role rolename="admin"/> <user username="all" password="all" roles="all"/>
<user username="admin" password="admin" roles="admin,all"/>
</tomcat-users> - 新建一个 Java Web 工程,编辑 web.xml 文件。
- 配置 <security-constraint/> 元素,指定角色可访问的资源集和可使用的 HTTP 方法。
<security-constraint>
<web-resource-collection>
<web-resource-name>Public resources</web-resource-name>
<url-pattern>/home/*</url-pattern>
<http-method>HEAD</http-method>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>all</role-name>
</auth-constraint>
</security-constraint> <security-constraint>
<web-resource-collection>
<web-resource-name>Secret resources</web-resource-name>
<url-pattern>/blog/*</url-pattern>
<url-pattern>/photo/*</url-pattern>
<http-method>HEAD</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint> - 配置 <login-config/> 元素,指定认证方式为基本认证,并指定安全域。
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>hueyhome</realm-name>
</login-config>
测试:
a) 无认证信息请求
C:\Users\huey>curl -I http://localhost:8080/helloweb/home/index.html
HTTP/1.1 401 Unauthorized
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 08:00:00 CST
WWW-Authenticate: Basic realm="hueyhome"
Content-Type: text/html;charset=utf-8
Content-Length: 951
Date: Mon, 18 May 2015 14:10:55 GMT
b) 错误认证信息请求
C:\Users\huey>curl -I -u "all:none" http://localhost:8080/helloweb/home/index.html
HTTP/1.1 401 Unauthorized
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 08:00:00 CST
WWW-Authenticate: Basic realm="hueyhome"
Content-Type: text/html;charset=utf-8
Content-Length: 951
Date: Mon, 18 May 2015 14:19:01 GMT
c) 正确认证信息但该用户无指定资源的访问权限
C:\Users\huey>curl -I -u "all:all" http://localhost:8080/helloweb/blog/index.html
HTTP/1.1 403 Forbidden
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 08:00:00 CST
Content-Type: text/html;charset=utf-8
Content-Length: 1057
Date: Mon, 18 May 2015 14:11:57 GMT
d) 正确认证信息且该用户无指定资源的访问权限
C:\Users\huey>curl -I -u "all:all" http://localhost:8080/helloweb/home/index.html
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 08:00:00 CST
Accept-Ranges: bytes
ETag: W/"317-1431758220112"
Last-Modified: Sat, 16 May 2015 06:37:00 GMT
Content-Type: text/html
Content-Length: 317
Date: Mon, 18 May 2015 14:11:04 GMT
Tomcat - 设置 HTTP 基本认证的更多相关文章
- Tomcat - 设置 HTTP 摘要认证
在 Tomcat 中设置 HTTP 摘要认证的示例 在 Tomcat 中设置摘要认证与设置基本认证几乎一样,差别在于配置 web.xml 时,<login-config/> 元素在指定认证 ...
- Tomcat 容器的安全认证和鉴权
大量的 Web 应用都有安全相关的需求,正因如此,Servlet 规范建议容器要有满足这些需求的机制和基础设施,所以容器要对以下安全特性予以支持: 身份验证:验证授权用户的用户名和密码 资源访问控制: ...
- Keytool配置 Tomcat的HTTPS双向认证
Keytool配置 Tomcat的HTTPS双向认证 证书生成 keytool 简介 Keytool是一个Java数据证书的管理工具, Keytool将密钥(key)和证书(certificates) ...
- Eclipse下Tomcat设置
1,Eclipse建立Tomcat服务 1.1 新建Server 首先这里是指,jee版的Eclipse.Eclipse是没有像MyEclipse那样集成Tomcat的,需要我们自己设置. New - ...
- Tomcat 配置 HTTPS双向认证
Tomcat 配置 HTTPS 双向认证指引说明: � 本文档仅提供 Linux 操作系统下的指引 � 在阅读本指引前请您在 Linux 部署 JDK 和 Tomcatserver为了 Tomcat ...
- Tomcat设置默认启动项目及Java Web工程设置默认启动页面
Tomcat设置默认启动项目 Tomcat设置默认启动项目,顾名思义,就是让可以在浏览器的地址栏中输入ip:8080,就能访问到我们的项目.具体操作如下: 1.打开tomcat的安装根目录,找到Tom ...
- Linux tomcat设置ip地址直接访问,tomcat设置ip地址直接访问,tomcat绑定ip地址
Linux tomcat设置ip地址直接访问,tomcat设置ip地址直接访问,tomcat绑定ip地址 >>>>>>>>>>>> ...
- tomcat设置默认启动项
Tomcat设置默认启动项目 Tomcat设置默认启动项目,顾名思义,就是让可以在浏览器的地址栏中输入ip:8080,就能访问到我们的项目.具体操作如下: 1.打开tomcat的安装根目 ...
- eclipse及tomcat设置编码
新装的eclipse新导入项目会乱码,解决办法: 右击项目选properties,找到resources选择utf-8 改后乱码解决 乱码解决后可能还会有红叉,project clean即可 一劳永逸 ...
随机推荐
- Android流量监控 思路,想法
1,开启一个服务,每5分钟跑动一次更新流量,用于能够准确记录流量 每一个小时,更新一次流量,用于清除非本月的流量 2,保存流量的时候,进行判断 a,若是数据库中保存的 ...
- CommandLine 和 Options
用到的jar包 <dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli& ...
- C++中用二维数组传参时形参该怎样写[转]
二维数组的存储方式是和一维数组没什么区别,但是用二维数组做参数,它的形参该怎样写? 要注意的是:函数中的形参其实就相当于一个声明,并不产生内存分配,形参的目的就是要让编译器知道函数参数的数据类型. 正 ...
- SQLite内存数据库
[转]SQLite内存数据库 http://www.cnblogs.com/liuyong/archive/2010/09/14/1826152.html SQLite 介绍 一. SQLite 是实 ...
- UML视图(九)部署图
一.什么是部署图? 部署图对面向对象系统的物理方面建模,描写叙述系统执行时节点.构件实例及其对象的配置.主要用来在部署系统时涉及到的硬件(处理器和设备)进行建模. 二.部署图的组成元素? 部署图主要包 ...
- oracle if then else
语句一: IF-THEN IF 条件 THEN 运行语句 END IF; 语句二: IF-THEN-ELSE IF 条件 THEN 运行语句 ELSE 运行其它语句 END IF; 语句三: IF-T ...
- stl 容器
10.1.2.2容器的分类 序列式容器(Sequence containers) 每个元素都有固定位置--取决于插入时机和地点,和元素值无关. vector.deque.list 关联式容器(Ass ...
- 网络IPC:套接字之寻址
在学习用套接字做一些有意义的事情之前,需要知道如何确定一个目标通信进程. 进程的标识有两个部分:计算机的网络地址可以帮助标识网络上想与之通信的计算机,而服务可以帮助标识计算机上特定的进程. 1.字节序 ...
- UNIX基础知识之系统调用与库函数的区别与联系
上图为UNIX操作系统的体系结构.内核的接口被称为系统调用(system call),公用函数库构建在系统调用接口之上,应用软件既可以使用公用函数库,也可直接使用系统调用. 更详细的说明如下: 所有操 ...
- LeetCode: Populating Next Right Pointer in Each Node
LeetCode: Populating Next Right Pointer in Each Node Given a binary tree struct TreeLinkNode { TreeL ...