使用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>
<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将散列后的密码转换成字符;所以在生成密码时,也要对应一致。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。