设为首页 收藏本站
查看: 569|回复: 0

[经验分享] 六、Tomcat服务器的Web安全的解决方法

[复制链接]

尚未签到

发表于 2017-2-4 08:30:59 | 显示全部楼层 |阅读模式
  1、概述
  在任何一种WEB应用开发中,不论大中小规模的,每个开发者都会遇到一些需要保护程序数据的问题,涉及到用户的LOGIN ID和PASSWORD。那么如何执行验证方式更好呢?实际上,有很多方式来实现。
  下面将讨论在Tomcat中实现基本的(BASIC)和基于表单的(FORM-BASED)验证方式。它通过server.xml和web.xml文件提供基本的和基于表单的验证。
  对于采用基于表单的(FORM-BASED)验证方式,只是要求在登录的JSP页面中的j_security_check 表单(for FORM-based) 需要两个参数:j_username和j_password。
  对于用户的登录的名称和密码在Tomcat中可以以两种形式来存放,一是采用server.xml;另一种也可以采用用户自己的数据库表来存储。
  2、设计系统中的各种人员的角色
  (1)设计思想
  l         统一用户管理,实现基于角色、粗粒度(基于URL)和细粒度(基于应用组件的方法调用)的访问策略管理体系,
  l         基于分级角色的权限管理、统一证书管理和统一资源管理 
  (2)设计目标
  一般采用数据库表(对于复杂的也可以采用LDAP)记录每个系统用户的帐号信息、功能权限和数据权限信息,这样能够增加用户管理和权限设置的灵活性,同时也避免多个用户共用一个帐号的情况
  (3)优点
  l         从用户角度来看,登录所有应用系统都使用唯一的用户名和口令(数字证书)同时在访问系统时,也只需要登录一次(单点登录全网漫游---SSO(Single Sign-On))。
  l        从管理者角度来看,提供了统一、集中、有效的用户管理。
  七、在Tomcat中采用基于表单的安全验证
  1、概述
  (1)基于表单的验证
  基于From的安全认证可以通过Tomcat Server对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"%>
<!-- 注意:action应该为j_security_check -->
<html>
<head>
<title>在Tomcat 中采用Form 验证方式实现的安全Web应用程序的登录页</title>
</head>
<body bgcolor="#ffffff">
<form method="post" name="Login" action="j_security_check">
<table width="500" border="1" align="center">
<tr>
<!-- 注意:用户名称和密码的输入应该为j_username 和j_password -->
<td colspan="2">
<div align="center">
<strong>在Tomcat中采用</strong><strong>基于表单的安全验证的登录表单 </strong>
</div>
</td>
</tr>
<tr>
<td width="224">
<div align="right">
用户名称:
</div>
</td>
<td width="260">
<input type="text" name="j_username">
</td>
</tr>
<tr>
<td>
<div align="right">
密码:
</div>
</td>
<td>
<input type="password" name="j_password">
</td>
</tr>
<tr>
<td>
<div align="right">
<input type="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"?>
定义本Web应用的默认启始页面
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.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 Form Security Constraint
</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<description>A Page of Login Success</description>
<url-pattern>/ProtectedDirOne/index.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
指定Form验证的用户的角色名称
<!-- Anyone with one of the listed roles may access this area -->
<role-name>admin</role-name>
</auth-constraint>
指定验证的方式为Form
</security-constraint>
<!-- Login configuration uses form-based authentication -->
<login-config>
<auth-method>FORM</auth-method>
<realm-name>
Tomcat Server Configuration 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 web application -->
<security-role>
关联Tomcat中的admin的角色
<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()方法获得当前登录成功后的实体名称。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-337182-1-1.html 上篇帖子: 设置Tomcat,Jboss应用服务器的端口 下篇帖子: Tomcat Session未过期导致的内存泄漏假象
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表