Flex + BlazeDS + JBoss 下集成JAAS

本文介绍了如何在使用EJB3的后台框架下,结合BlazeDS与JBoss实现JAAS安全认证。遵循官方文档,通过配置BlazeDS资源、拷贝相关jar文件到Jboss目录、修改context.xml、配置jboss-web.xml,并在Flex客户端实现登录功能。确保密码处理方式与JBoss的DatabaseServerLoginModule一致。
摘要由CSDN通过智能技术生成

使用EJB3 重量级的框架作为后台的框架,于BlazeDS整合时,出现了很多新问题,没有Spring与BlazeDS 拥抱得好呀。 

1. 首先要了解BlazeDS的安全认证的集成 , 官方文档http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=services_security_1.html 

2. 官方文档Custom authentication里给的是 Tomcat 作为Web Server 的例子, 这时我们需要找到 BlazeDS包里的\resources\security\jboss\ 的readme.txt, 

   1) 从你的blazeDS的安装目录里/resources/security/tomcat 将 flex-tomcat-common.jar 和 flex-tomcat-server.jar 这两个jar文件  拷到 Jboss的//server/default/lib 下;

   2) 将blazeDS的安装目录里/resources/security/tomcat/context.xml 文件拷到你的程序的WEB-INF 目录下。 其实context.xml里就一句话:

<Context>
    <Valve className="flex.messaging.security.TomcatValve"/>
</Context>

   3) 重启你的Jboss.


3. 到这里为止,只是告诉blazeDS 安全认证我们要用 web Server的。接下来,我们要配置JBoss 的JAAS. 


4. 在WEB-INF 下添加 jboss-web.xml 文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN"
        "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
<jboss-web>
    <security-domain flushOnSessionInvalidation="false">java:/jaas/LoginPolicy</security-domain>
</jboss-web>

5. 在JBoss 目录 下的\server\default\conf 的 login-config.xml 中添加:

<!-- add by xuekun -->
	<application-policy name="LoginPolicy">
		<authentication>
			<login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
				<module-option name = "dsJndiName">java:/MyDS</module-option>
				<module-option name = "principalsQuery">SELECT PASSWORD FROM USER_INFO WHERE USERNAME=?</module-option>
				<module-option name = "rolesQuery">SELECT ROLES, 'Role' FROM USER_INFO WHERE USERNAME=?</module-option>
				<module-option name= "hashUserPassword">true</module-option>
				<module-option name= "hashAlgorithm">MD5</module-option>
				<module-option name= "hashEncoding">base64</module-option>
			 </login-module>
		 </authentication>
	</application-policy>


6. 修改 blazeDS 的 remoting-config.xml 文件,在security节下添加:

<login-command class="flex.messaging.security.TomcatLoginCommand" server="JBoss">
            <per-client-authentication>false</per-client-authentication>
        </login-command>


7. 在Flex Client 中的Login 功能中,我们要使用ChanelSet的login()文件。

service.channelSet.login(username,password);


8. 重启JBoss,若login成功的话,返回值是success.


注: 因JBoss 的 DatabaseServerLoginModule 默认使用base64将散列后的密码转换成字符;所以在生成密码时,也要对应一致。





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值