JAAS在网上的评价度不是很高,大家一致认为它比较晦涩难用。虽然如此,但是因为我们开发的项目里用到了JAAS,所以还不得不研究一下。
所谓JAAS(Java Authentication Authorization Service Java认证与授权服务)就是为了保证Java代码的安全执行而分离出来的一个独立安全模块。它的一个显著的优点就是它被设计成可插入式的,这样就保证了应用程序的独立性。详细介绍请参看
http://baike.baidu.com/view/72676.htm。
我这里假设你已经初步了解JAAS机制,然后我主要介绍其在JBoss里如何配置,并如何应用在EJB的Stateless Bean上。具体实现请参考附件。
1、编写一个主角类,即实现Principle接口的类。接着编写一个角色组类,即实现Group接口的类。写这两个类时和不用JBoss时的写法相同。
2、写好登录模块,即继承LoginModule接口的类。写这个类时也不用考虑JBoss的因素。
3、把JAAS配置集成到JBoss里面去。打开<JBOSS安装目录>/server/<default(这里是JBoss启动模式对应的文件夹)>/conf/login-config.xml,参照如下格式添加内容:
<!-- Deploy Ejb_JBoss_JaasSecurityDomain -->
<application-policy name="Ejb_JBoss_JaasSecurityDomain">
<authentication>
<login-module code="jaas.MyLoginModule" flag="required"> </login-module>
</authentication>
</application-policy>
然后在项目里的src/META-INF下新建jboss.xml,参照如下格式填写内容:
<jboss>
<security-domain>Ejb_JBoss_JaasSecurityDomain</security-domain>
</jboss>
这样我们就完成了JAAS在JBoss中的配置。
接下来,讨论我们如何在EJB服务里使用该JAAS验证。
1、首先,需写好一个EJB服务,即Stateless Bean。无需多言。
2、我们采用注解方式插入JAAS验证模块。这里涉及到的注解有@DeclareRoles、@RolesAllowed、@PermitAll、@DenyAll、@RunAs,这几个注释里面,@RolesAllowed使用最频繁。就我测试发现,@DeclareRoles只起声明作用,就如VB中声明基本变量一样,没有实际意义。而@PermitAll是允许所有通过验证的用户访问,而@DenyAll还未被支持,尚不能使用。具体使用请参考J2EE5API。
3、写客户端时需要注意:初始化InitialContext的Properties的设置如下:
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.security.jndi.JndiLoginInitialContextFactory");
prop.put(Context.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interfaces");
prop.put(Context.PROVIDER_URL, "(1)");
prop.put(Context.SECURITY_PRINCIPAL, "(2)");
prop.put(Context.SECURITY_CREDENTIALS, "(3)");
InitialContext ctx = new InitialContext(prop);
其中,(1)处应填写JBoss所在服务器的URL,如"localhost:1099";
(2)处对应上面所写登录模块(实现LoginModule接口)中的NameCallback(需在代码里添加)的getName()方法;
(3)处对应上面所写登录模块中的PasswordCallback(需在代码里添加)的getPassword()方法。
4、使用InitialContext得到所写服务,并调用其中的方法。
休息一下,理理思路,你会发现,在JBoss里使用JAAS并不是一件困难的事。
分享到:
相关推荐
Jboss 7 + EJB 3.0 + Eclipse环境配置
【JBOSS7+EJB3.0】是一个关于企业级Java应用服务器JBOSS7与企业JavaBeans(EJB)3.0版本结合使用的实践案例。JBOSS AS(Application Server)是Red Hat公司开发的一款开源Java EE应用服务器,而EJB 3.0是Java平台上...
《JBoss 7.1.1 + EJB 3.0 + MySQL 数据源配置详解》 在企业级Java应用开发中,JBoss Application Server(简称JBoss AS)是广泛使用的开源应用服务器,版本7.1.1是其稳定且功能强大的一个版本。EJB(Enterprise ...
经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 part3
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...
经典JAVA EE企业应用实战 基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发.part2
本文将深入探讨“flex+EJB3.0(GDS通讯)”这一主题,结合实际开发实例,阐述如何利用AMF3协议在JBOSS应用服务器上实现两者的整合。 Flex是Adobe公司推出的一种富互联网应用程序(RIA)开发框架,主要用于构建具有...
源码说明: <br> 1)本项目开发环境 操作系统: Windows xp sp2 JDK环境: JDK1.6.0 IDE工具: MyEclipse6.0GA 数据库: Mysql 5.0.41 字符集设置:utf-8 EJB容器: JBoss4.2.1GA Web...
经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 part2
《SpringMVC 4.1 + EJB 3.0 + EasyUI 整合EAR项目:构建高效分布式系统的关键技术》 在当前的企业级应用开发中,为了实现高性能、高可扩展性和高可维护性的系统,开发者往往需要采用一系列先进的技术和框架进行整合...
Tapestry5.1 + EJB3.0实现的登录实例。 采用MYSQL数据和JBOSS4.2服务器。 项目可以直接部署。 内附操作手册。MYsql驱动 和MYSQL配置文件。 项目直接部署即可运行…… 感谢大家都支持。希望能够对跟我一样的初学者...
经典JAVA EE企业应用实战 基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发个人认为是不错的书
经典JAVA EE企业应用实战 基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发。第二部分。
1. **EJB容器**:JBoss 4.2.3.GA支持EJB 3.0规范,简化了企业级组件的开发,允许开发者通过注解来定义bean的行为,无需XML配置。 2. **JMS支持**:集成JMS服务,允许应用进行异步通信和消息队列处理,提供高可用性...
《经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发》介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则包含Session Bean、Message Driven Bean的...
经典JAVA EE企业应用实战 基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发。第三部分。
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码第3章 其他部分详见我的上传列表 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则包含...
经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 part1
在"**EJB3.0+JBOSS+MyEclipse初体验(完整代码和过程).txt**"文件中,你将找到一个完整的示例,涵盖了上述所有步骤,包括具体的代码片段和执行过程,这对于初学者来说是一个很好的起点,可以快速理解并实践EJB 3.0在...