`
sooxin
  • 浏览: 259249 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

【转载】Red5 0.6 安全

阅读更多

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ma_yan368/archive/2008/08/01/2753383.aspx

 

序言
==========================
此文档描述Red5 API,介绍在0.6版中对流和/或共享对象的访问保护。类似`Client.readAccess`和`Client.writeAccess`在 Macromedia Flash Communication Server / Flash Media Server 2中所提供的作用。


==========================
在Red5中,读(重放)和写(发布/录制)访问到流是被分开保护的。

流重放安全
--------------------------
希望限制每个用户流的重放或者只希望提供给定名称的流的访问,可以用到IStreamPlaybackSecurity接口。

它可以被一些对象实现,并在ApplicationAdapter注册。流安全handler的一个专有数字被每个程序所支持。只要有一个handler 拒绝访问,客户端就会收到一个错误`NetStream.Failed`,它包含一个`descr iption`字段提供通讯错误信息。

一个handler例子,只允许访问以`liveStream`开始的流,描述如下:

  import org.red5.server.api.IScope;
  import org.red5.server.api.stream.IStreamPlaybackSecurity;
 
  public class NamePlaybackSecurity implements IStreamPlaybackSecurity {
 
    public boolean isPlaybackAllowed(IScope scope, String name, int start,
      int length, boolean flushPlaylist) {
        if (!name.startswith("liveStream")) {
            return false;
        } else {
            return true;
        }
    };
   
  }

注册这个handler到程序中,加入以下代码到`appStart`方法中:

  registerStreamPlaybackSecurity(new NamePlaybackSecurity());

Red5包含了一个拒绝任何流访问的handler(DenyAllStreamAccess)


流发布安全
--------------------------
在大部分程序中,允许用户发布和/或录制流,此访问必须被限制以防止此服务被滥用。
因此,Red5提供IStreamPublishSecurity接口来拒绝某些流的发布。

类似IStreamPlaybackSecurity,它可以被一些对象实现,并在ApplicationAdapter中注册。只要一个已注册的 handler拒绝访问,客户端就会收到一个错误`NetStream.Failed`,它包含一个`desc ription`字段提供通讯错误信息。

一个handler例子,只允许被鉴别的连接发布以`liveStream`开始的实时流,并拒绝其它所有的访问。描述如下:

  import org.red5.server.api.IConnection;
  import org.red5.server.api.IScope;
  import org.red5.server.api.Red5;
  import org.red5.server.api.stream.IStreamPublishSecurity;
 
  public class AuthNamePublishSecurity implements IStreamPublishSecurity {
 
    public isPublishAllowed(IScope scope, String name, String mode) {
        if (!"live".equals(mode)) {
            // 不是一个实时流
            return false;
        }
   
        IConnection conn = Red5.getConnectionLocal();
        if (!"authenticated".equals(conn.getAttribute("UserType"))) {
            // 用户没有被鉴别
            return false;
        }
       
        if (!name.startswith("liveStream")) {
            return false;
        } else {
            return true;
        }
    };
   
  }

注册这个handler到程序中,加入以下代码到`appStart`方法中:

  registerStreamPublishSecurity(new AuthNamePublishSecurity());

当然,你也可以在一个`*Connect`或`*Join`方法中加入代码来设置`UserType`属性,以使用户获得鉴别,从而能够允许发布流。

Red5包含了一个拒绝任何流访问的handler(DenyAllStreamAccess)

 


共享对象
==========================
一旦程序变得复杂,你可能希望控制存储在共享对象中的数据,因此不允许客户端直接修改共享对象,只能通过程序的方法来暴露。

ISharedObjectSecurity接口可以用于写handler,在给定的共享对象上拒绝某些动作,防止客户端任意的创建共享对象。

下面的例子只允许持久化共享对象`Chat`的创建。任何客户端都可以连接到它,只允许通过共享对象发送`saySomething`信息。所有到属性的写访问都被拒绝。你可以通过服务端改变属性,但是这些改变都是不被安全handler所保护的。

  import java.util.List;
  import org.red5.server.api.IScope;
  import org.red5.server.api.so.ISharedObject;
  import org.red5.server.api.so.ISharedObjectSecurity;
 
  public class SampleSOSecurityHandler implements ISharedObjectSecurity {
   
    public boolean isConnectionAllowed(ISharedObject so) {
        // note: we don't check for the name here as only one SO can be
        //       created with this handler.
        return true;
    }
   
    public boolean isCreationAllowed(IScope scope, String name,
      boolean persistent) {
        if (!"Chat".equals(name) || !persistent) {
            return false;
        } else {
            return true;
        }
    }
   
    public boolean isDeleteAllowed(ISharedObject so, String key) {
        return false;
    }
   
    public boolean isSendAllowed(ISharedObject so, String message,
      List arguments) {
        if (!"saySomething".equals(message)) {
            return false;
        } else {
            return true;
        }
    }
   
    public boolean isWriteAllowed(ISharedObject so, String key,
      Object value) {
        return false;
    }
   
  }

注册这个handler到程序中,加入以下代码到`appStart`方法中:

  registerSharedObjectSecurity(new SampleSOSecurityHandler());

如果你希望注册一个安全handler只为一个给定的共享对象,代码如下:
 
  ISharedObject so = getSharedObject(scope, "MySharedObject");
  so.registerSharedObjectSecurity(new MySOSecurityHandler());


Red5 API
org.red5.server.api.stream.IStreamPlaybackSecurity
org.red5.server.adapter.ApplicationAdapter
org.red5.server.api.stream.support.DenyAllStreamAccess
org.red5.server.api.stream.IStreamPublishSecurity
org.red5.server.api.so.ISharedObjectSecurity

分享到:
评论

相关推荐

    red5入门,tomcat+red5+myeclipse集成,原创禁止转载

    Red5是一款开源的流媒体服务器,它支持实时流传输协议(RTMP),并提供录制、播放、存储等功能,广泛应用于在线视频直播、VoIP、互动游戏等场景。本教程将介绍如何进行Red5的入门学习,并结合Tomcat和MyEclipse进行...

    Red5的使用方法和具体功能介绍

    - [Red5 安装包](http://dl.fancycode.com/red5/setup-red5-0.6rc2.exe) 默认情况下,Red5会安装在`C:\Program Files\Red5`目录下。安装完成后,可以通过解压`online.zip`文件到`C:\Program Files\Red5\webapps`...

    red5 与 tomcat项目集成

    例如,`red5-common.xml` 中的 JMX(Java Management Extensions)配置可能需要根据实际需求或安全策略来决定是否启用。在这个例子中,JMX 服务器的相关配置(`jmxFactory` 和 `jmxAgent`)被注释掉,因为它们可能...

    Red5 1.0 Final Web版

    Red5 1.0 Final是该软件的一个稳定版本,为用户提供了一个可靠的平台来处理多媒体数据。 在整合Red5 1.0 Final与Apache Tomcat时,我们首先要理解这两个组件的角色。Red5作为一个流媒体服务器,负责处理和分发...

    red5 1.0 web版 myeclipse工程

    Red5是一款开源的流媒体服务器,它支持实时流传输协议(RTMP)、RTMPT、RTMPE、RTMPF、RTMPS等,能够处理音视频的直播、点播和录制等多种应用场景。在本项目中,我们关注的是Red5 1.0的Web版本,该版本特别适合在Web...

    red5.jar

    《Red5服务器详解及其核心组件——以red5-war-0.8.0.zip中的red5.jar为例》 在IT行业中,尤其是在线媒体流服务领域,Red5是一个非常重要的开源服务器平台。它支持实时流传输协议(RTMP),使得开发者能够构建实时...

    red5-1.0.0-webapps-demos.zip

    标题中的"red5-1.0.0-webapps-demos.zip"表明这是一个关于Red5服务器的Web应用程序示例的压缩包。Red5是一款开源的流媒体服务器,它支持实时流传输协议(RTMP)、文件录制、播放以及直播等功能。1.0.0是其版本号,...

    Red5-0.9.1

    Red5是一款开源的流媒体服务器,它允许开发者创建实时的、交互式的富因特网应用程序(Rich Internet Applications,简称RIA)。0.9.1是Red5的一个特定版本,旨在提供稳定性和性能改进,以及可能的新功能。在这个版本...

    利用red5和ffmpeg搭建rtmp流媒体服务器

    根据提供的文档信息,本文将详细阐述如何使用FFmpeg和Red5搭建一个RTMP流媒体服务器,以及相关的配置和测试步骤。 首先,了解RTMP(Real Time Messaging Protocol)是一种网络协议,它被广泛用于在线直播和流媒体...

    Red5的Web视频、音频系统开发

    ### Red5的Web视频、音频系统开发 #### 一、Red5服务器简介 Red5是一款开源的媒体服务器,主要用于实时音视频流传输。它支持多种协议(如RTMP、RTSP等)和编解码器(如H.264、AAC等),并且能够很好地与Flash、...

    red5的开发手册pdf

    ##### 3.1 Red5 0.6 安全特性 **前言:** 安全性对于任何流媒体服务器都是至关重要的。Red5 提供了一系列的安全措施来保护流媒体数据。 - **流播放安全** (`Stream playback security`):可以通过配置限制访问特定...

    red5入门详细教程

    Red5入门详细教程 Red5是一款开源的流媒体服务器,主要用Java编写,支持实时流传输协议(RTSP)、实时消息协议(RTMP)以及HTTP流等,为开发者提供了丰富的功能,广泛应用于视频直播、在线教育、游戏互动等领域。本教程...

    red5 免安装版 red5 1.00

    Red5是一款开源的流媒体服务器,它支持实时流传输协议(RTMP)、H.264、Flash视频(FLV)以及其他多种媒体格式。免安装版的Red5是指无需通过传统安装过程,可以直接运行的版本,这对于开发者进行快速测试或者在不同...

    Red5手册详细教程

    Red5的手册中详细介绍了Red5的配置文件,包括jetty.xml、keystore、log4j.properties、realm.properties、tomcat-users.xml、red5.globals、red5.properties、red5.xml、red5-common.xml等。这些配置文件用于配置...

    red5-0.9.1.tar.gz

    Red5是一款开源的流媒体服务器,它允许开发者创建实时的、交互式的富互联网应用程序(Rich Internet Applications,简称RIA)。这个“red5-0.9.1.tar.gz”文件是Red5的一个版本,版本号为0.9.1,被打包成.tar.gz格式...

    基于 Red5 的流媒体服务器的搭建和应用

    ### 基于Red5的流媒体服务器搭建与应用详解 #### 一、Red5概述 **Red5**是一款基于Java开发的开源免费Flash流媒体服务器。它利用Java语言及一系列强大开源框架构建而成,为企业的各类应用提供了坚实的基础。Red5...

    red5入门教程

    【Red5入门教程】 Red5是一款基于Java开发的开源免费Flash流媒体服务器,与Adobe的FMS(Flash Media Server)类似,提供了丰富的功能,包括实时流传输、录制、共享对象、远程调用以及视频播放与录制等。由于其开源...

    red5聊天建议系统

    这个"Red5聊天建议系统"显然是基于Red5搭建的一个用于实时聊天的应用示例,对于初学者来说,它是学习如何利用Red5实现类似即时通讯功能的一个很好的起点。 首先,我们需要了解Red5的基本架构。Red5服务器的核心是...

    red5-server,RED5服务器核心.zip

    7. **安全性**:Red5支持RTMPS协议,提供加密的连接,确保了数据传输的安全性,适合应用于需要保密的直播场景。 8. **HLS协议支持**:High Efficiency Live Streaming (HLS)是一种基于HTTP的流媒体协议,Red5对HLS...

Global site tag (gtag.js) - Google Analytics