Flex BlazeDS https加密访问服务器的解决方法

一、 BlazeDS的访问方式:

BlazeDS是一个基于消息的框架。主要运用了两种模式:请求响应模式、发布/订阅模式。

BlazeDS提供以下几种通道:

  (1)标准AMF通道;AMF协议是基于Http协议的。

  (2)加密AMF通道;SecureAMF协议是基于Https协议的。服务器(tomcat)需要增加SSL协议配置

  (3HTTP通道(AMFX)。

其中AMFHTTP通道都支持无轮询的请求/响应模式和客户端轮询模式(模拟实时通信),而AMFHTTP流通道模式提供了真正的数据流实时模式。

此文主要讨论SecureAMF协议的实现。


二、服务器Tomcat下配置https环境

 加密方式分为:

1.服务器单项加密验证,参见博文:http://blog.csdn.net/supersky07/article/details/7407523

2.服务器配置https双向认证,参见博文:http://jingyan.baidu.com/article/a948d6515d3e850a2dcd2ee6.html


最终都需要修改tomcat下的server.xml配置文件,增加对https访问的支持。


 <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS" 

               keystoreFile="/Users/liuwensheng/Documents/tomcat.keystore" keystorePass="1234567890"/>

   

<!--

clientAuth   是否支持双向验证,默认是false不支持 

keystoreFile 是服务器的验证文件 

keystorePass 是验证密码 

-->



三、Flex客户端利用BlazeDS访问加密服务器需要的配置。

BlazeDS服务器配置需要修改服务器配置文件:remoting-config.xml和proxy-config.xml,分别增加对加密管道的支持:

    <default-channels>

    <channel ref="my-amf"/> 

        <channel ref="my-secure-amf"/> 

    </default-channels>


四、Flex 客户端访问代码的修改

Flex客户端代码需要做适应性修改,为了既可以在http环境下访问标准AMF通道,也可以在https环境下访问SecureAMF通道。所以需要手动设置

RemoteObject的channelSet,既根据浏览器中的访问协议类型(http、https)来动态创建AMF的通道类型。代码如下:


private function init():void

 

//支持HTTP和HTTPS

var channelSet:ChannelSet = changeAMFChannel();

//给mx.rpc.remoting.RemoteObject对象设置通道

remote.channelSet = channelSet;

}




/**

* 为了满足不同的请求协议,http和https做动态互转

**/ 

private function changeAMFChannel():ChannelSet

{

var surl:String = ExternalInterface.call("eval", "window.location.href");

var cs:ChannelSet = new ChannelSet();

var c:Channel = null;

if(URLUtil.getProtocol(surl) == "https")

{

c = new SecureAMFChannel();

c.uri = "/frame/messagebroker/amfsecure";

}

else

{

c = new AMFChannel();

c.uri = "/frame/messagebroker/amf";

}

cs.addChannel(c);

return cs;

}



  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值