加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 阅读中心 > 软件学习

J2EE的安全认证机制

时间:2014-05-04 10:03:36  来源:不详  作者:佚名
 
  实现Web应用程序的安
J2EE中,Web容器支持应用
全机制是Web应用程序的设计人
程序内置的安全机制。
员和编程人员必须面对的任务。在

  Web应用程序的安全机
认证机制:基本认证、基于
数的Web应用程序都使用基
安全角色对应用程序的Web
制有二种组件:认证和授权。基
表单的认证、相互认证。由于能
于表单的认证。Web容器使用在W
资源的访问进行授权。
于J2EE的Web容器提供三种类型的
够对认证用户界面进行定制,大多
eb应用程序的部署描述符中定义的

  在使用基于表单的认证机制中,应用程序的设计人员和开发人员会遇到3类问题:      
  ·基于表单的认证如何
的,因为许多组织已经在数
与数据库和LDAP等其他领域的安
据库和LDAP表单中实现了认证机
全机制协同工作。(这是非常必要
制。)
  ·如何在Web应用程序的部署描述符
(web.xml)中增加或删除军政府的授权角色。
  ·Web容器在Web资源层次上进行授权
上的授权。
;应用程序则需要在单一的Web资源中执行功能层次

  尽管有许多与基于表单
多数的应用程序都以自己的
的认证有关的文档和例子,但都
方式襀安全机制。
没有能够阐明这一问题。因此,大

  本篇文章说明了基于表单的认证如何
协作的问题。它还解释了Web窗口如何使
角色,保护Web资源中的功能。
与其他方面的安全机制,尤其是数据库中的安全机制
用安全角色执行授权以及应用程序如何扩展这些安全

  基于表单的认证                                                                
  基于表单的认证能够使
了认证机制的类型、登录的
开发人员定制认证的用户界面。
URI和错误页面。
web.xml的login-config小节定义

  <login-config>                                                  
  <auth-method>FORM</auth-method>                
  <form-login-config>                                        
  <form-login-page>/
login.jsp</form-login-page
>
  <form-error-page>/
fail_login.html</form-error
-page>
  </form-login-config>                                      
  </login-config>                                                
  登录表单必须包含输入用户姓名和口
j_password,表单将这二个值发送给j_se
令的字段,它们必须被分别命名为j_username和
curity_check逻辑名字。
  下面是一个该表单如何在HTML网页中实现的例子:                              
  <form method="POST" action="j_s
ecurity_check">
  <input type="text" name="j_username">    

  <input type="passwo
rd" name="j_password">
  </form>                                                               
  除非所有的连接都是在
源被访问时,Web容器就会
SSL上实现的,该表单能够透露
激活为该资源配置的认证机制。
用户名和口令。当受保护的Web资

  为了实现Web应用程序的安全,Web容器执行下面的步骤:                      
  1、在受保护的Web资源被访问时,判断用户是否被认证。                        
  2、如果用户没有得到认证,则通过
供安全信任状。
重定向到部署描述符中定义的注册页面,要求用户提

  3、根据为该容器配置的安全领域,确认用户的信任状有效。                        
  4、判断得到认证的用
户是否被授权访问部署描述符(
web.xml)中定义的Web资源。
  象基本的安全认证机制
全区域。也就是说,它不明
安全区域认证用户方面引起
那样,在Web应用程序的部署描
确地定义用来认证用户的安全区
混淆。
述符中,基于表单的认证不指定安
域类型,这就会在它使用什么样的

  要对用户进行验证,Web窗口需要完成下面的步骤:                              
  1、判断该容器配置的安全区域。                                                
  2、使用该安全区域进行认证。                                                  
  由于数据库和LDAP在维护信息方面提
用它们维护安全认证和授权信息。
供了更大的灵活性,因此大多数组织都会希望继续使

  许多Web窗口都支持不
Web容器中,server.xml将
同类型的安全区域:数据库、LD
数据库配置为其安全区域。
AP和定制区域。例如,在Tomcat

  <Realm                                                                 
  className="org.apache.catalina.r
ealm.JDBCRealm"
  debug="99"                                                          

  driverName="oracle.j
dbc.driver.OracleDriver"
  connectionURL="jdbc:
oracle:thin:@{IPAddress}:{Po
rt}:{Servicename}"
  connectionName="{DB Username}"                  
  connectionPassword="{Password}"                
  userTable="users"                                           
  userNameCol="username"                                 
  userCredCol="password"                                  
  userRoleTable="user_roles"                         
  roleNameCol="rolename"                                 
  />                                                                         
  Tomcat的server.xml的<Realm>标
注意,容器对Web应用程序使用该区域,
志定义了窗口用来识别一个用户的安全区域的类型。
应用程序的认证机制是基于表单的。
  授权                                                                          
  一旦用户被识别后,容
的<auth-constraint>标
容器会返回一个错误。
器就会得到认证用户的安全角色
志中定义的安全角色之一。如果

,看用户是否属于在部署描述符中
用户不属于任何一个安全角色,则

  部署描述符(web.xml)的<securit
访问这些资源的安全角色清单。
y-constraint>标志定义了被保护的Web资源和能够

  <security-constraint>                                    
  <web-resource-collection>                            
  <web-resource-name>AdminPages
</web-resource-name>
  <description> acce
ssible by authorised users
</description>
  <url-pattern>/admin/*</url-pattern>        
  <http-method>GET</http-method>                  
  </web-resource-collection>                          
  <auth-constraint>                                            
  <description>These
are the roles who have acce
ss</description>
  <role-name>manager</role-name>                  
  </auth-constraint>                                          
  </security-constraint>                                  
  Web窗口在网页层次上执行认证。然
进行认证,这会要求在应用程序中定义一
对功能的访问,应用程序需要理解角色的
而,商业性应用程序可能还希望对一个网页内的功能
些新的附加的与应用程序有关的安全角色。为了控制
权限概念。Web容器标准没有解决权限的问题。
  由于授权角色是动态的,开发人员常
描述符中。为了使应用程序充分利用安全
色。因此,应用程序可以定义一个高层次
该角色中的所有用户都拥有能够访问Web
常会感到迷惑,即这些安全角色是否需要添加到部署
支持,Web容器只需要在部署描述符中定义的一个角
的角色,然后将所有的用户都指派给该角色。这将使
资源的权限。
  另外,应用程序还可以
由于应用程序已经配置有一
角色也就不需要在部署描述
现与指定应用程序有关的授
定义额外的角色,执行对一种We
个包含应用程序中所有用户的高
符中进行定义。这使得Web应用
权。
b资源中较低层次的功能的授权。
层次安全角色,这些低层次的安全
程序能够利用容器的授权支持,实

  我们可以在部署描述符
,这使得管理员角色中的所
们可以在应用程序中创建 s
中为所有用户定义一个高层次的
有用户都能够访问管理网页。为
ysadmin或appadmin等新的角色
管理员角色,保护管理类Web资源
了控制管理网页中的其他功能,我
。
  应用程序可以对这些安
用这些权限来控制对其功能
全角色进行扩展,使它们拥有一
的访问。
定的权限。然后,应用程序可以使

  尽管与特定应用程序相
isUserInRole方法中使用,
关的安全角色不是定义在部署描
判断用户是否在这些安全角色中
述符中的,这些角色仍然可以在
。
  优点                                                                          
  ·Web应用程序无需实现认证机制,简化Web应用程序的配置。                  
  ·Web应用程序能够使
规划的安全。
用getRemoteUser、IsUserInRol

e和getUserPrincipal方法实现有

  ·Web应用程序能够将认证信息传播给EJB容器。                              
  在Tomcat中配置数据库安全区域                                            
  1、创建用户表。                                                              
  该数据库表需要有username和password二个字段。                  
  create table users (username var
char(20) not null, password(20) not null)
  2、创建角色表                                                                
  该表维护着应用程序中角色的清单,它仅仅有rolename一个字段。            
  create table roles (
rolename varchar(20) not nul
l)
  3、创建用户-角色关联表                                                      
  该表维护着一个用户和各个角色之间的关联,一个用户可以属于一个或多个角色。      
  create table user_ro
not null)
les (username varchar(20) no

t null, rolename varchar(20)

  4、在表中插入数据                                                            
  insert into users values('user1'
, 'password')
  insert into role values('manager')          
  insert into user_rol
es values('user1', 'manager'
)
  5、创建用户表。                                                              
  该数据库表需要有username和password二个字段。                  
  create table users (username var
char(20) not null, password(20) not null)
  6、创建角色表                                                                
  该表维护着应用程序中角色的清单,它仅仅有rolename一个字段。            
  create table roles (
rolename varchar(20) not nul
l)
  7、创建用户-角色关联表                                                      
  该表维护着一个用户和各个角色之间的关联,一个用户可以属于一个或多个角色。      
  create table user_ro
not null)
les (username varchar(20) no

t null, rolename varchar(20)

  8、在表中插入数据                                                            
  insert into users values('user1'
, 'password')
  insert into role values('manager')          
  insert into user_rol
es values('user1', 'manager'
)
  9、通过将下面的信息拷贝到{tomcat
(本例使用了薄客户端驱动程序,Tomcat
}conf文件夹的server.xml文件中,配置Tomcat。
使用内存区域作为缺省的安全区域。)
  <Realm                                                                 
  className="org.apache.catalina.r
ealm.JDBCRealm"
  debug="99"                                                          

  driverName="oracle.j
dbc.driver.OracleDriver"
  connectionURL="jdbc:oracle:thin:
@{IP address}:{Port}:{Servicename}"
  connectionName="{DB Username}"                  
  connectionPassword="{Password}"                
  userTable="users"                                           
  userNameCol="username"                                 
  userCredCol="password"                                  
  userRoleTable="user_roles"                         
  roleNameCol="rolename"                                 
  />                                                                          
  用环境变量替换下面的值:                                                      
  {IP Address} ━━数据库服务器的IP地址                          
  {Port} ━━端口号                                                      
  {Servicename} ━━服务名字                                      
  {DB Username} ━━数据库登录                                    
  {Password} ━━数据库登录的口令                                    
  10、将Oracle的薄客户机驱动程序JA
{tomcat_home}/server/lib目录中。
R文件或数据库的JDBC驱动程序拷贝到

  11、用下面的安全约束配置Web应用程序的部署描述符                          
  <security-constraint>                                    
  <web-resource-collection>                            
  <web-resource-name>Protected A
rea</web-resource-name>
  <!-- 定义需要被保护的URL -->                                      
  <url-pattern>/*</url-pattern>                    
  <http-method>DELETE</http-method>            
  <http-method>GET</http-method>                  
  <http-method>POST</http-method>                
  <http-method>PUT</http-method>                  
  </web-resource-collection>                          
  <auth-constraint>                                            
  <role-name>manager</role-name>                  
  </auth-constraint>                                          
  <user-data-constraint><transp
ort-guarantee>
  NONE</transport-guarantee></u
ser-data-constraint>
  </security-constraint>                                  
  <!-- 缺省的登录配置使用基于表单的认证 -->                            
  <login-config>                                                  
  <auth-method>FORM</auth-method>                
  <realm-name>Exampl
e Form-Based Authentication
Area</realm-name>
  <form-login-config>                                        
  <form-login-page>/
jsp/login.jsp</form-login-p
age>
  <form-error-page>/jsp/error.js
p</form-error-page>
  </form-login-config>                                      
  </login-config>                                                
   需要注意的是,<auth-constraint
角色之一。
>中<role-name>的值应当是用户-角色关联表中中

  在Tomcat中配置例子文件                                                  
  1、使用上面介绍的命令配置Tomcat。                                      
  2、下载security-form-based.war文
件,并将它拷贝到Tomcat的webapps目录。
  3、启动Tomcat服务器                                                    
  4、打开一个浏览器,输入下面的地
no}/security-form-based/protected/in
址:http://{ip address:port
dex.jsp
  5、输入用户名和口令。                                                        
  在WebLogic中配置数据库安全区域                                        
  配置Web应用程序的部
WebLogic的配置描述符之间
需要下面的小节:
署描述符,这一过程与在Tomcat
的一个差别是,WebLogic配置描

中配置非常相似。Tomcat和
述符要求下面的小节,而Tomcat不


  <security-role>                                                
  <description>                                                    
  Manager security role                                    
  </description>                                                  
  <role-name>                                                        
  manager                                                                
  </role-name>                                                      
  </security-role>                                             
  结论                                                                          
  通过本篇文章,读者应该会对基于表
证有个比较深刻的认识。Web应用程序能
许使用以前的安全认证机制。
单的认证、以及它如何与数据库安全区域配合进行认
够利用基于表单的认证机制,保护它的资源,同时允

  另外,本篇文章还描述了J2EE Web提
署描述符的情况下如何定义新的安全角色
供的授权支持层次,以及在不修改Web应用程序的部
。


来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
后牧工业区厂房1500平出租
后牧工业区厂房1500平
现实的童话公主艾米·罗森
现实的童话公主艾米·
科比专为大场面而生
科比专为大场面而生
“最美清洁工”原是《赤壁》宫女
“最美清洁工”原是《
相关文章
    无相关信息
栏目更新
栏目热门