在Tomcat中采用基于表单的安全验证
1、概述
(1)基于表单的验证
基于From的安全认证可以通过TomcatServer对Form表单中所提供的数据进行验证,基于表单的验证使系统开发者可以自定义用户的登陆页面和报错页面。这种验证方法与基本HTTP的验证方法的唯一区别就在于它可以根据用户的要求制定登陆和出错页面。
通过拦截并检查用户的请求,检查用户是否在应用系统中已经创建好login session。如果没有,则将用户转向到认证服务的登录页面。但在Tomcat中的基于表单的验证凭证不被保护并以纯文本发送。
(2)在Tomcat 中的实现
在Tomcat中,用户、用户组和角色都是在XML配置文件(C:\jakarta-tomcat-5.0.19\conf\tomcat-users.xml)中指定的,我们只需要提供一个登陆页面,包含一个名为j_security_check的Form表单,一个名为j_username的TextBox和一个名为j_password的PasswordBox,然后在/WEB-INF/web.xml中配置即可使用Tomcat默认的JAAS身份验证。
使用JAAS验证的好处是,验证逻辑从页面中分离,对页面的限制访问是通过/WEB-INF/web.xml中的配置指定的,无需自定义过滤器。
(3)为了实现Web应用程序的安全,Tomcat Web容器执行下面的步骤:
l 在受保护的Web资源被访问时,判断用户是否被认证。
l 如果用户没有得到认证,则通过重定向到部署描述符中定义的注册页面,要求用户提供安全信任状。
l 根据为该容器配置的安全领域,确认用户的信任状有效。
l 判断得到认证的用户是否被授权访问部署描述符(web.xml)中定义的Web资源。
2、设计步骤
(1)编写登录页面和错误处理页面:请见FormSafeWebApp 程序中的页面
(2)登录的页面文件的内容如下
基于FORM的用户认证要求你返回一个包括用户名和密码的HTML表单,这个表单相对应与用户名和密码的元素必须是j_username和j_password,并且表单的action描述必须为j_security_check(其实是一个Servlet)。该表单的具体操作以及j_username和j_password名字在Servlet中定义。当这个表单到达服务器的时候,由内部的Tomcat Server安全区对它进行确认。
包括这个表单的资源可以是一个HTML页面、一个JSP页面或者一个Servlet。你可以在<form-login-page>元素中定义。基于表单的认证能够使开发人员定制认证的用户界面。在web.xml的login-config标签项目定义了认证机制的类型、登录的URI和错误页面。
下面为该页面的内容:
<%@ page contentType="text/html;charset=GBK" %>
<html><head><title>在Tomcat 中采用Form 验证方式实现的安全Web应用程序的登录页</title>
</head><bodybgcolor="#ffffff">
<form method="post"name="Login" action="j_security_check">
<table width="500" border="1"align="center"> <tr>
<td colspan="2"> <divalign="center"><strong>在Tomcat中采用</strong><strong>基于表单的安全验证的登录表单</strong> </div></td> </tr>
<tr><tdwidth="224"><div align="right">用户名称:</div></td>
<td width="260"><inputtype="text" name="j_username"></td></tr>
<tr><td><div align="right">密码:</div></td>
<td><inputtype="password" name="j_password"></td>
</tr>
<tr><td><div align="right"><inputtype="submit" name="Submit" value="提交">
</div></td> <td><input type="reset"name="Submit2" value="重置"></td>
</tr></table></form></body></html>
(3)修改web.xml文件
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPEweb-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!--Security is active on entire directory -->
<security-constraint>
<display-name>Tomcat Server FormSecurity Constraint</display-name>
<web-resource-collection>
<web-resource-name>ProtectedArea</web-resource-name>
<description>A Page of LoginSuccess</description>
<url-pattern>/ProtectedDirOne/index.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- Anyone with one of the listedroles may access this area -->
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<!-- Login configuration uses form-basedauthentication -->
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Tomcat ServerConfiguration Form-Based Authentication Area</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/Error.htm</form-error-page> </form-login-config>
</login-config>
<!-- Security roles referenced by this webapplication -->
<security-role>
<description>
The role is Administration
</description>
<role-name>admin</role-name>
</security-role>
</web-app>
(4)在C:\jakarta-tomcat-5.0.19\conf\tomcat-users.xml文件中配置admin的角色以及与该 admin角色相匹配的用户名称和密码
(5)执行该页面
在浏览器中直接输入受保护的页面的URL地址:
http://127.0.0.1:8080/FormSafeWebApp/ProtectedDirOne/,将出现要求登录的页面。
在表单中输入用户名称为admin(前面在tomcat-users.xml文件中所设置的某一用户名称),密码为12345678。然后点击“提交”,将出现如下页面
如果用户名称或者密码输入不正确,将出现如下的页面也就是错误页面
(6)在页面中获得当前登录成功后的用户名称和实体名称
利用request对象中的getRemoteUser()方法获得当前登录成功后的用户名称和利用getUserPrincipal()方法获得当前登录成功后的实体名称。
在Tomcat中采用基于表单的安全验证的更多相关文章
- 【FBA】SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用
//http://www.cnblogs.com/OceanEyes/p/custom-provider-in-sharepoint-2013-fba-authentication.html 由于项目 ...
- [FBA]SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用
//http://tech.ddvip.com/2014-05/1401197453210723.html 由于项目的需要,登录SharePoint Application的用户将从一个统一平台中获取 ...
- SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用
由于项目的需要,登录SharePoint Application的用户将从一个统一平台中获取,而不是从Domain中获取,所以需要对SharePoint Application的身份验证(Claims ...
- 如何在.Net Core MVC中为动态表单开启客户端验证
非Core中的请参照: MVC的验证 jquery.validate.unobtrusive mvc验证jquery.unobtrusive-ajax 参照向动态表单增加验证 页面引入相关JS: &l ...
- asp.net 如何配置authentication,完成基于表单的身份验证
步骤一: 在根目录下的web.config中加入: <system.web> <authentication mode="Forms"> ...
- 基于表单的身份验证(FBA)
https://technet.microsoft.com/zh-cn/library/ee806890(office.15).aspx http://www.tuicool.com/articles ...
- ASP.NET MVC 4 (十三) 基于表单的身份验证
在前面的章节中我们知道可以在MVC应用程序中使用[Authorize]特性来限制用户对某些网址(控制器/控制器方法)的访问,但这都是在对用户认证之后,而用户的认证则依然是使用ASP.NET平台的认证机 ...
- JavaWeb应用中的身份验证(声明式)——基于表单的身份认证
容器管理安全最普遍的类型建立在基于表单的身份验证方式上. 通过这样的方式,server自己主动将尚未验证的用户重定向到一个HTML表单.检查他们的username和password,决定他们属于哪个角 ...
- SharePoint 2013 基于表单 Membership 的身份验证
其实关于SharePoint 2013 表单身份验证网上已经有很多了,比如SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authenticatio ...
随机推荐
- PHP curl请求https遇到的坑
PHP里curl对https的证书配置默认是服务器端要求验证的,如果服务器端没有配置证书验证,则无法请求https路径.如果为了简便使用不需要配置https证书的话,配置curl时将以下两项设置为fa ...
- 利用appium-1.5.3.dmg安装Appium. doctors时,提示 Could not detect Mac OS X Version from sw_vers output: '10.12'
发生这种错误的原因是因为:appium不支持mac 10.12版本. 解决方法: https://stackoverflow.com/questions/40129794/how-to-fix-err ...
- windows PAE扩展和AWE编程
在32位windows上只能看到最大3GB的内存空间,而且每个应用程序只能访问4GB的的内存,这个限制是windows独有的,为了使程序能够访问大于4GB的内存空间,需要使用AWE编程接口,同时需要开 ...
- 说说那些经典的web前端面试题
阅读目录 JavaScript部分 JQurey部分 HTML/CSS部分 正则表达式 开发及性能优化部分 本篇收录了一些面试中经常会遇到的经典面试题以及自己面试过程中遇到的一些问题,并且都给出了我在 ...
- 2017年最新基于Bootstrap 4 的专业、多用途响应式布局的系统模板
本文分享一款2017年最新的2017年最新基于Bootstrap 4 的专业.多用途响应式布局的系统模板,该模板是一款强大并且非常灵活的后台管理系统模板:能适应绝大多数的web应用程序开发,比如:AP ...
- OllyDBG 破解入门教程
一.OllyDBG 的安装与配置OllyDBG 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了.汉化版的发布版本是个 RAR 压缩包,同样只需解压到一 ...
- bzoj4332;vijos1955:JSOI2012 分零食
描述 这里是欢乐的进香河,这里是欢乐的幼儿园. 今天是2月14日,星期二.在这个特殊的日子里,老师带着同学们欢乐地跳着,笑着.校长从幼儿园旁边的小吃店买了大量的零食决定分给同学们.听到这个消息,所有同 ...
- 0/1背包 dp学习~6
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1203 I NEED A OFFER! Time Limit: 2000/1000 MS (Java/O ...
- Ping pong(树状数组求序列中比某个位置上的数小的数字个数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2492 Ping pong Time Limit: 2000/1000 MS (Java/Others) ...
- 利用jQuery移除和添加图片
1.样式 <style type="text/css"> .changeImage{ background:url(images/right. ...