当前位置:天才代写 > tutorial > JAVA 教程 > J2EE的安详认证机制

J2EE的安详认证机制

2017-11-11 08:00 星期六 所属: JAVA 教程 浏览:373

副标题#e#

实现Web应用措施的安详机制是Web应用措施的设计人员和编程人员必需面临的任务。在J2EE中,Web容器支持应用措施内置的安详机制。

Web应用措施的安详机制有二种组件:认证和授权。基于J2EE的Web容器提供三种范例的认证机制:根基认证、基于表单的认证、彼此认证。由于可以或许对认证用户界面举办定制,大大都的Web应用措施都利用基于表单的认证。Web容器利用在Web应用措施的陈设描写符中界说的安详脚色对应用措施的Web资源的会见举办授权。

在利用基于表单的认证机制中,应用措施的设计人员和开拓人员会碰着3类问题:

·基于表单的认证如何与数据库和LDAP等其他规模的安详机制协同事情。(这长短常须要的,因为很多组织已经在数据库和LDAP表单中实现了认证机制。)

·如安在Web应用措施的陈设描写符(web.xml)中增加或删除军当局的授权脚色。

·Web容器在Web资源条理长举办授权;应用措施则需要在单一的Web资源中执行成果条理上的授权。

尽量有很多与基于表单的认证有关的文档和例子,但都没有可以或许阐发这一问题。因此,大大都的应用措施都以本身的方法襀安详机制。

本篇文章说明白基于表单的认证如何与其他方面的安详机制,尤其是数据库中的安详机制协作的问题。它还表明白Web窗口如何利用安详脚色执行授权以及应用措施如何扩展这些安详脚色,掩护Web资源中的成果。

基于表单的认证

基于表单的认证可以或许使开拓人员定制认证的用户界面。web.xml的login-config小节界说了认证机制的范例、登录的URI和错误页面。

<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_username和j_password,表单将这二个值发送给j_security_check逻辑名字。

下面是一个该表单如安在HTML网页中实现的例子:

<form method="POST" action="j_security_check">
<input type="text" name="j_username">
<input type="password" name="j_password">
</form>

除非所有的毗连都是在SSL上实现的,该表单可以或许透露用户名和口令。当受掩护的Web资源被会见时,Web容器就会激活为该资源设置的认证机制。

为了实现Web应用措施的安详,Web容器执行下面的步调:

1、在受掩护的Web资源被会见时,判定用户是否被认证。

2、假如用户没有获得认证,则通过重定向到陈设描写符中界说的注册页面,要求用户提供安详信任状。

3、按照为该容器设置的安详规模,确认用户的信任状有效。

4、判定获得认证的用户是否被授权会见陈设描写符(web.xml)中界说的Web资源。


#p#副标题#e#

象根基的安详认证机制那样,在Web应用措施的陈设描写符中,基于表单的认证不指定安详区域。也就是说,它不明晰地界说用来认证用户的安详区域范例,这就会在它利用什么样的安详区域认证用户方面引起夹杂。

要对用户举办验证,Web窗口需要完成下面的步调:

1、判定该容器设置的安详区域。

2、利用该安详区域举办认证。

由于数据库和LDAP在维护信息方面提供了更大的机动性,因此大大都组织城市但愿继承利用它们维护安详认证和授权信息。

很多Web窗口都支持差异范例的安详区域:数据库、LDAP和定制区域。譬喻,在Tomcat Web容器中,server.xml将数据库设置为其安详区域。

<Realm
className="org.apache.catalina.realm.JDBCRealm"
debug="99"
driverName="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@{IPAddress}:{Port}:{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)的<security-constraint>符号界说了被掩护的Web资源和可以或许会见这些资源的安详脚色清单。

#p#分页标题#e#

<security-constraint>
<web-resource-collection>
<web-resource-name>AdminPages</web-resource-name>
<description> accessible 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 access</description>
<role-name>manager</role-name>
</auth-constraint>
</security-constraint>

Web窗口在网页条理上执行认证。然而,贸易性应用措施大概还但愿对一个网页内的成果举办认证,这会要求在应用措施中界说一些新的附加的与应用措施有关的安详脚色。为了节制对成果的会见,应用措施需要领略脚色的权限观念。Web容器尺度没有办理权限的问题。

由于授权脚色是动态的,开拓人员经常会感想疑惑,即这些安详脚色是否需要添加到陈设描写符中。为了使应用措施充实操作安详支持,Web容器只需要在陈设描写符中界说的一个脚色。因此,应用措施可以界说一个高条理的脚色,然后将所有的用户都指派给该脚色。这将使该脚色中的所有用户都拥有可以或许会见Web资源的权限。

别的,应用措施还可以界说特另外脚色,执行对一种Web资源中较低条理的成果的授权。由于应用措施已经设置有一个包括应用措施中所有用户的高条理安详脚色,这些低条理的安详脚色也就不需要在陈设描写符中举办界说。这使得Web应用措施可以或许操作容器的授权支持,实现与指定应用措施有关的授权。

我们可以在陈设描写符中为所有用户界说一个高条理的打点员脚色,掩护打点类Web资源,这使得打点员脚色中的所有用户都可以或许会见打点网页。为了节制打点网页中的其他成果,我们可以在应用措施中建设 sysadmin或appadmin等新的脚色。

应用措施可以对这些安详脚色举办扩展,使它们拥有必然的权限。然后,应用措施可以利用这些权限来节制对其成果的会见。

尽量与特定应用措施相关的安详脚色不是界说在陈设描写符中的,这些脚色仍然可以在isUserInRole要领中利用,判定用户是否在这些安详脚色中。

利益

·Web应用措施无需实现认证机制,简化Web应用措施的设置。

·Web应用措施可以或许利用getRemoteUser、IsUserInRole和getUserPrincipal要领实现有筹划的安详。

·Web应用措施可以或许将认证信息流传给EJB容器。

#p#副标题#e#

在Tomcat中设置数据库安详区域

1、建设用户表。

该数据库表需要有username和password二个字段。

create table users (username varchar(20) not null, password(20) not null)

2、建设脚色表

该表维护着应用措施中脚色的清单,它仅仅有rolename一个字段。

create table roles (rolename varchar(20) not null)

3、建设用户-脚色关联表

该表维护着一个用户和各个脚色之间的关联,一个用户可以属于一个或多个脚色。

create table user_roles (username varchar(20) not null, rolename varchar(20) not null)

4、在表中插入数据

insert into users values('user1', 'password')
insert into role values('manager')
insert into user_roles values('user1', 'manager')

5、建设用户表。

该数据库表需要有username和password二个字段。

create table users (username varchar(20) not null, password(20) not null)

6、建设脚色表

该表维护着应用措施中脚色的清单,它仅仅有rolename一个字段。

create table roles (rolename varchar(20) not null)

7、建设用户-脚色关联表

该表维护着一个用户和各个脚色之间的关联,一个用户可以属于一个或多个脚色。

create table user_roles (username varchar(20) not null, rolename varchar(20) not null)

8、在表中插入数据

insert into users values('user1', 'password')
insert into role values('manager')
insert into user_roles values('user1', 'manager')

9、通过将下面的信息拷贝到{tomcat}\conf\文件夹的server.xml文件中,设置Tomcat。(本例利用了薄客户端驱动措施,Tomcat利用内存区域作为缺省的安详区域。)

<Realm
className="org.apache.catalina.realm.JDBCRealm"
debug="99"
driverName="oracle.jdbc.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} ━━数据库登录的口令

#p#副标题#e#

10、将Oracle的薄客户机驱动措施JAR文件或数据库的JDBC驱动措施拷贝到{tomcat_home}/server/lib目次中。

11、用下面的安详约束设置Web应用措施的陈设描写符

#p#分页标题#e#

<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Area</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><transport-guarantee>
NONE</transport-guarantee></user-data-constraint>
</security-constraint>
<!-- 缺省的登录设置利用基于表单的认证 -->
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Example Form-Based Authentication Area</realm-name>
<form-login-config>
<form-login-page>/jsp/login.jsp</form-login-page>
<form-error-page>/jsp/error.jsp</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、打开一个欣赏器,输入下面的地点:http://{ip address:port no}/security-form-based/protected/index.jsp

5、输入用户名和口令。

在WebLogic中设置数据库安详区域

设置Web应用措施的陈设描写符,这一进程与在Tomcat中设置很是相似。Tomcat和WebLogic的设置描写符之间的一个不同是,WebLogic设置描写符要求下面的小节,而Tomcat不需要下面的小节:

<security-role>
<description>
Manager security role
</description>
<role-name>
manager
</role-name>
</security-role>

结论

通过本篇文章,读者应该会对基于表单的认证、以及它如何与数据库安详区域共同举办认证有个较量深刻的认识。Web应用措施可以或许操作基于表单的认证机制,掩护它的资源,同时答允利用以前的安详认证机制。

别的,本篇文章还描写了J2EE Web提供的授权支持条理,以及在不修改Web应用措施的陈设描写符的环境下如何界说新的安详脚色。

 

    关键字:

天才代写-代写联系方式