jboss 下 jaas 的使用

来源:互联网 发布:mysql 字段替换字符串 编辑:程序博客网 时间:2024/05/24 06:23

jboss 下 jaas 的使用
   jaas是j2ee规范中定义的java 认证与授权服务规范,jboss作为一个主流开源j2ee应用服务器,实现了该规范。
 jboss中的jaas可以用在ejb层(业务逻辑层)或web层,或者同时用于这两层。
   在web层,可以通过jaas实现对资源(例如jsp页面)的保护,通过在web.xml的配置实现特定的目录只有特定角色的用户才可以访问

,所有未授权用户无法访问。当用户试图访问这些受保护的jsp页面的时候,会被导航到login页面要求输入用户名密码,输入正确后将

显示,否则被导航到无权访问的error页面。在会话有效期内,登录用户访问权限都受jaas配置控制。
   当web应用部署在jboss上时,可以自定义安全域,例如使用自己定义的数据库安全域,这样就可以将用户名密码角色等信息存放在

数据库表中了,自定义安全域的步骤和注意点:
    1在server/default/conf/login-config.xml中增加一个安全域。
    2. 如果是在web应用中使用该安全域,则在web应用的WEB-INF下建立一个jboss-web.xml文件,在其中声明使用自定义安全域:
   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd">
<jboss-web>
<security-domain>java:/jaas/shop</security-domain>
</jboss-web>
 一定要注意,该文件一定要位于WEB-INF下,否则web容器找不到该文件而使用默认的安全域other。
这样,web应用中就可以根据web.xml中配置的安全性约束来控制不同角色用户对页面的访问了。
 3。如果需要在业务层ejb层使用该安全域来控制对ejb方法的访问,在jar包的META-INF下的jboss.xml中声明使用自定义安全域:
   <?xml version="1.0" encoding="UTF-8"?>
<jboss>
<security-domain>shop</security-domain>
<unauthenticated-principal>AnonymousUser</unauthenticated-principal></jboss>

  这样,就可以在ejb中通过注释标注各个方法的访问权限了。

 

   如果web层和ejb业务层使用相同的安全域,web层认证通过后,将直接使用web层的角色去访问ejb层的方法。当然,也可以在web层

直接通过jndi传入用户名/密码去访问ejb的方法。
   在业务层,通过 标注指明各个ejb的方法允许那些角色访问,ejb容器会根据jar包中 classpath下的users.properties和

roles.properties来确定是否允许访问这些方法。
 
当然,在web服务器tomcat中也对jaas 认证授权服务规范进行了实现,其实现的方式可能不一样,但是也能够实现相似的功能。

原创粉丝点击