1.JBoss下利用JAAS处理登录

        在J2EE项目中,登录模块大致有两种方式来实现:一是请求每个View(包括jsp,servlet等)的时候通过过滤器来检查权限,这个我就不多说了。另外一种方式就是采用应用服务器集成的JAAS技术来处理登录,具体的实现方式可能在不同的应用服务器上略有不同,但原理基本一样。在这里我主要介绍一下JBoss下的JAAS登录模块的编写和配置。

       两年前参与一个项目的时候,第一次接触到JAAS技术,那个项目采用IBM的Websphere做应用服务器。感觉非常的简洁和严谨:没用登录的用户在请求任意一个设置了权限的资源时都会转向登录页面(在这个登录页面的源代码里你绝对看不到隐藏了要跳转的页面的URL),登录完成后再转到请求的资源,如果用过滤器来实现这种登录验证方式可能要写很多的代码,效果也未必很好,用JAAS的方式来处理则非常简单,配置一下就好了,甚至不用写代码。

  于是等到去年自己负责一个项目的时候也采用了这种安全验证方式,由于这方面的技术资料很少,所以也摸索了不少时间。一开始是用Tomcat做Web服务器,后来迁移到了Jboss平台,我在这里主要介绍一下Jboss下这方面的技术,如果还有精力也提一下Tomcat下的实现方式。先来罗列一下接下来我要介绍的内容:

  1. JAAS概述,Jboss下配置安全性验证的几种方式
  2. 从数据库里读取登录用户的验证信息
  3. 用自己的类来实现JAAS登录模块

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
本示例利用JBoss提供的JAAS支持,通过很简单的代码实现了登录和访问控制,能够很好的从一个应用移植到另一个应用(当然仅限JBoss环境),只要修改一些xml和数据库的配置就可以了。<br>本示例用了一些hibernate的东西读取数据库,这部分代码可以不必理会. <br><br>1.配置JBoss主目录下的server/default/conf下的login-config.xml,加入如下的内容:<br><br> <application-policy name = "testLoginModule"><br> <authentication><br> <login-module code = "com.ben.common.security.LoginModule"<br> flag = "required"><br> <module-option name = "dsJndiName">java:/testds</module-option><br> <module-option name = "principalsQuery">SELECT PASSWORD FROM USERS WHERE LOGINID=?</module-option><br> <module-option name = "rolesQuery">SELECT ROLE ROLENAME,'Roles' FROM USER_ROLE WHERE LOGINID=?</module-option><br> <module-option name="hashAlgorithm">MD5</module-option><br> <module-option name="hashEncoding">base64</module-option> <br> <module-option name="loginBo">com.ben.org.business.LoginBo</module-option> <br> </login-module><br> </authentication><br> </application-policy> <br><br>2.建表<br><br>在你的数据库中建立一个用户ben,密码为oracle,然后用sqlplus或其它oracle客户端工具执行db.sql,你可以根据自己的需要修改一下这些sql语句,比如表空间等<br><br>3.建立连接池<br><br>将oracle-ds.xml文件复制到你的Jboss主目录下的server\default\deploy目录下,如果你的目录下已经有了这个文件,你可以把我的内容复制过去,相应的IP地址、SID、用户名、密码等你根据你的实际情况修改。<br><br>4.复制hibernate需要的ehcache-1.1.jar到你的Jboss主目录下的server\default\lib目录下。<br><br>5.设置DefaultCacheTimeout,DefaultCacheResolution的值为0,这个我就不多说了,请参阅我的上一篇<br><br>文章《在JBoss中自己定义JAAS登录模块处理登录事件》。<br><br>6.配置完后将TestLoginMoudle.war复制到你的Jboss主目录下的server\default\deploy目录下,运行jboss即可.<br><br>然后你就可以在浏览器里输入地址如:http://127.0.0.1:8082/TestLoginMoudle即可以看到登录页面。<br><br>用户名:zhangsan<br>密码:123456<br><br>用户名:lisi<br>密码:123456<br><br>其中zhangsan有权限查看index.jsp,因为他的角色是role1,李四则会被拒绝,因为他的角色是role2.<br>
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值