在企业应用中,认证是一个很常见的需求,而在J2EE项目中,认证登录大致有两种方式来实现:
一种是通过过滤器来拦截请求控制登录与权限,另外一种方式就是适用JAAS, 今天就简单介绍下使用JAAS快速开发一个JBOSS的自定义认证。
一、环境准备工作:
1.1 一个部署的war包,包内应当配置资源保护,和启用JAAS验证。
WEB-INF中web.xml 中配置资源保护 示例:
<security-constraint>
<web-resource-collection>
<web-resource-name>war_all_pages</web-resource-name>
<url-pattern>*.do</url-pattern>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.htm</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>users</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>users</role-name>
</security-role>
WEB-INF 中 jboss-web.xml配置 示例:
<jboss-web>
<!-- 下面的test就是在login-config.xml配置的application-policy的名称 -->
<security-domain>java:/jaas/ test</security-domain>
</jboss-web>
登陆页面 示例:
根目录下添加login.jsp ,提交至j_security_check 且提交帐号密码为j_username 、j_password
<form name="form" method="POST" action="j_security_check">
<table >
<tr><td>
<input type="text" name="j_username" >
</td> </tr>
<tr><td>
<input type="password" name="j_password" >
</td>
</tr>
<tr><td></td><td><input type="submit" value="登录"></td></tr>
</table>
</form>
二、开发一个简单自定义认证模块:
在众多Loginmodule中,UsernamePasswordLoginModule是一个可以快速扩展的类,它已经处理了提交进来的参数,我们只需简单扩展就可以使用,代码参考:
public class TestLoginModule extends UsernamePasswordLoginModule
{
private SimplePrincipal user;
private boolean guestOnly;
protected static Logger log = Logger.getLogger(TestLoginModule .class);
protected Principal getIdentity()
{
Principal principal = this.user;
if (principal == null)
principal = super.getIdentity();
return principal;
}
protected boolean validatePassword(String inputPassword, String expectedPassword)
{
boolean isValid = false;
if (inputPassword == null)
{
this.guestOnly = true;
isValid = true;
this.user = new SimplePrincipal("guest");
}
else
{
log.debug("inputPassword" + inputPassword);
//这里实现了对用户密码的验证,可以自定义验证方式。
isValid = inputPassword.equals("aaaaa888");
}
return isValid;
}
protected Group[] getRoleSets() throws LoginException
{
Group[] roleSets = { new SimpleGroup("Roles") };
if (!this.guestOnly)
//这里加入了需要的角色。
roleSets[0].addMember(new SimplePrincipal("users"));
roleSets[0].addMember(new SimplePrincipal("guest"));
return roleSets;
}
@Override
public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options)
{
super.initialize(subject, callbackHandler, sharedState, options);
}
@Override
protected String getUsersPassword() throws LoginException
{
return getUsername();
}
}
三、在JBOSS中配置自定义认证模块:
现在需要配置我们开发的认证模块了,在{jboss_server}\default\conf 下修改login-config.xml
在 <application-policy name = "other">节点下加入:
<authentication>
<login-module code = "org.jboss.security.auth.spi.TestLoginModule" flag = "required"></login-module>
</authentication>
四、测试。
现在把第一步准备的war包放入部署目录,把第二步开发的模块编译的jar包放入{jboss_server}\default\lib下,重启服务器,
访问http://xxxx:端口/test ,输入账号密码,ok,你的jboss自定义认证模块可以使用了。
相关推荐
本示例利用JBoss提供的JAAS支持,通过很简单的代码实现了登录和访问控制,能够很好的从一个应用移植到另一个应用(当然仅限JBoss环境),只要修改一些xml和数据库的配置就可以了。 本示例用了一些hibernate的东西读取...
JBOSS security JAAS
jboss-jaas.jar
IDE 1.4.0 3 基于JBoss 4.x的JSF应用开发 4 基于JBoss 4.x的JMS应用开发 5 基于JBoss 4.x的Hibernate应用开发 6 基于JBoss 4.x的JTA应用开发 7 基于JBoss 4.x的JavaMail应用开发 8 基于JBoss 4.x...
JAAS认证与授权教程,包含本教程的源代码
JAAS JaasDemo JAAS例子
jaas 入门经典实例,jaas 入门经典实例,jaas 入门经典实例jaas 入门经典实例,jaas 入门经典实例
文件中包含 已配置好的tomcat7和jass示例 打包部署后即可运行 还有一份说明文档 tomcat配置的是mac版的,如果是windows的系统请自行修改tomcat启动参数
第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具...
jaas.jar jaas.jar jaas.jar
Seam在JAAS和JBoss规则之上,创建了一个新的基于规则的安全框架。甚至有用来渲染PDF、在线电子邮件和图表及wikitext的JSF标签库。 Seam组件可以同时作为一个Web Service进行调用,异步地从客户端JavaScript或者...
NULL 博文链接:https://leiht.iteye.com/blog/387577
JAAS in Web Applications主要是关于java 的认证与授权.例子很详细,如果有需要此类功能开发可以联系我,收费2000
jaas实现,单纯java文件
jaas j2se例子jaas j2se例子jaas j2se例子jaas j2se例子jaas j2se例子jaas j2se例子jaas j2se例子jaas j2se例子jaas j2se例子jaas j2se例子jaas j2se例子jaas j2se例子jaas j2se例子jaas j2se例子jaas j2se例子jaas ...
java JAAS登陆验证
JAAS简介及实例.JAAS简介及实例.JAAS简介及实例.JAAS简介及实例.JAAS简介及实例.JAAS简介及实例.JAAS简介及实例.
JAAS简单入门例子