Wowza Community

MediaSecurity AddOn Package (SecureToken, RTMP & RTSP Authentication and more)

https://www.wowza.com/docs/media-security-overview

The jar file is in the package. In the lib folder of the zip archive.

Charlie

We do not distribute the source for this module. You can create a class that implements the IAuthenticateUsernamePasswordProvider interface and it will intercept the authentication events. First, install the latest patch:

http://www.wowza.com/devbuild.html

Then take a look at this forum post. It explains the basics.

Charlie

Hi all -

The User guide for the Media Security package indicates this URL shows how to setup JW Player, but the link is broken:

http://www.wowza.com/forums/showthread.php?t=1665

I couldn’t find it in a search.

The documentation for version 2.0 says:

ModuleSecureToken

ModuleSecureToken

com.wowza.wms.plugin.security.ModuleSecureToken

But the file inside the “lib” folder is called “wms.plugin.security.jar”. Is there a different file to look for.

When I try to use secure connection on the server its coming up with these errors:

Missing function: FCPublish

WARN server comment 2010-01-23 00:22:45 - - - - - 149.38 - - - - - - - Missing function: createStream

WARN server comment 2010-01-23 00:22:56 - - - - - 159.633 - - - - - - - Missing function: deleteStream

WARN server comment 2010-01-23 00:22:59 - - - - - 162.57 - - - - - - - Missing function: releaseStream

WARN server comment 2010-01-23 00:22:59 - - - - - 162.57 - - - - - - - Missing function: FCPublish

WARN server comment 2010-01-23 00:22:59 - - - - - 162.571 - - - - - - - Missing function: createStream

Not sure what that means.

Thanks for any help

Hi guys,

I’ve been having problems with the security settings since day one so I’m back to basics. I’m just trying to use ModuleRTMPAuthenticate so nobody else can stream into my server.

I’ve followed every step in the guide and I can still stream from Wirecast without credentials. I’m working with the live application to record my streams to my S3 bucket. Here’s my current conf/live/Application.xml:

<Root>
	<Application>
		<Connections>
			<AutoAccept>true</AutoAccept>
			<AllowDomains></AllowDomains>
		</Connections>
		<!--
			StorageDir path variables
			
			${com.wowza.wms.AppHome} - Application home directory
			${com.wowza.wms.ConfigHome} - Configuration home directory
			${com.wowza.wms.context.VHost} - Virtual host name
			${com.wowza.wms.context.VHostConfigHome} - Virtual host config directory
			${com.wowza.wms.context.Application} - Application name
			${com.wowza.wms.context.ApplicationInstance} - Application instance name
			
		-->
		<Streams>
			<StreamType>live-record</StreamType>
			<StorageDir>${com.wowza.wms.context.VHostConfigHome}/content</StorageDir>
			<KeyDir>${com.wowza.wms.context.VHostConfigHome}/keys</KeyDir>
			<!-- LiveStreamPacketizers (separate with commas): cupertinostreamingpacketizer, smoothstreamingpacketizer, cupertinostreamingrepeater, smoothstreamingrepeater -->
			<LiveStreamPacketizers>smoothstreamingpacketizer,cupertinostreamingpacketizer</LiveStreamPacketizers>			
			<!-- Properties defined here will override any properties defined in conf/Streams.xml for any streams types loaded by this application -->
			<Properties>
			</Properties>
		</Streams>
		<!-- HTTPStreamers (separate with commas): cupertinostreaming, smoothstreaming -->
		<HTTPStreamers>cupertinostreaming,smoothstreaming</HTTPStreamers>			
		<SharedObjects>
			<StorageDir></StorageDir>
		</SharedObjects>
		<Client>
			<IdleFrequency>-1</IdleFrequency>
			<Access>
				<StreamReadAccess>*</StreamReadAccess>
				<StreamWriteAccess>*</StreamWriteAccess>
				<StreamAudioSampleAccess></StreamAudioSampleAccess>
				<StreamVideoSampleAccess></StreamVideoSampleAccess>
				<SharedObjectReadAccess>*</SharedObjectReadAccess>
				<SharedObjectWriteAccess>*</SharedObjectWriteAccess>
			</Access>
		</Client>
		<RTP>
			<!-- RTP/Authentication/[type]Methods defined in Authentication.xml. Default setup includes; none, basic, digest -->
			<Authentication>
				<PublishMethod>digest</PublishMethod>
				<PlayMethod>none</PlayMethod>
			</Authentication>
			<!-- RTP/AVSyncMethod. Valid values are: senderreport, systemclock, rtptimecode -->
			<AVSyncMethod>senderreport</AVSyncMethod>
			<MaxRTCPWaitTime>12000</MaxRTCPWaitTime>
			<IdleFrequency>75</IdleFrequency>
			<RTSPSessionTimeout>90000</RTSPSessionTimeout>
			<RTSPMaximumPendingWriteBytes>0</RTSPMaximumPendingWriteBytes>
			<RTSPBindIpAddress></RTSPBindIpAddress>
			<RTSPConnectionIpAddress>0.0.0.0</RTSPConnectionIpAddress>
			<RTSPOriginIpAddress>127.0.0.1</RTSPOriginIpAddress>
			<IncomingDatagramPortRanges>*</IncomingDatagramPortRanges>
			<Properties>
			</Properties>
		</RTP>
		<MediaCaster>
			<Properties>
			</Properties>
		</MediaCaster>
		<MediaReader>
			<Properties>
			</Properties>
		</MediaReader>
		<MediaWriter>
			<Properties>
			</Properties>
		</MediaWriter>
		<LiveStreamPacketizer>
			<Properties>
			</Properties>
		</LiveStreamPacketizer>
		<HTTPStreamer>
			<Properties>
			</Properties>
		</HTTPStreamer>
		<Repeater>
			<OriginURL></OriginURL>
			<QueryString><![CDATA[]]></QueryString>
		</Repeater> 
		<Modules>
			<Module>
				<Name>base</Name>
				<Description>Base</Description>
				<Class>com.wowza.wms.module.ModuleCore</Class>
			</Module>
			<Module>
				<Name>properties</Name>
				<Description>Properties</Description>
				<Class>com.wowza.wms.module.ModuleProperties</Class>
			</Module>
			<Module>
				<Name>logging</Name>
				<Description>Client Logging</Description>
				<Class>com.wowza.wms.module.ModuleClientLogging</Class>
			</Module>
			<Module>
				<Name>flvplayback</Name>
				<Description>FLVPlayback</Description>
				<Class>com.wowza.wms.module.ModuleFLVPlayback</Class>
			</Module>
			<Module>
				<Name>ModuleRTMPAuthenticate</Name>
				<Description>ModuleRTMPAuthenticate</Description>
				<Class>com.wowza.wms.plugin.security.ModuleRTMPAuthenticate</Class>
			</Module>
			<Module>
				<Name>ModuleMediaWriterFileMover</Name>
				<Description>ModuleMediaWriterFileMover</Description>
				<Class>com.wowza.wms.module.ModuleMediaWriterFileMover</Class>
			</Module>
		</Modules>
		<Properties>
			<Property>
				<Name>fileMoverDestinationPath</Name>
				<Value>/mnt/s3</Value>
			</Property>
			<Property>
				<Name>fileMoverDeleteOriginal</Name>
				<Value>true</Value>
				<Type>Boolean</Type>
			</Property>
			<Property>
				<Name>fileMoverVersionFile</Name>
				<Value>true</Value>
				<Type>Boolean</Type>
			</Property>
		</Properties>
	</Application>
</Root>

I’ve tried none, basic and digest for PublishMethod and the video gets streamed/recorded no matter what. What can be the problem?

I have a similar problem if I try to use (in a clean application) the ModuleRequireSecureConnection. I can stream with both RTMP and RTMPE. Is it possible that I have to “turn on” these modules in my Wowza Server somewhere else? Simply adding them to my Application.xml doesn’t seem to affect anything at all.

BTW I did put a new username and password in the publish.password file.

Any thoughts?

Thanks :wink:

Are you connecting using RTMPE? This is required if you have requireSecureConnection set.

Charlie

It is in the packaged referenced in the first post.

Charlie

That’s the right jar file for that Module.

The errors indicate the Application.xml is malformed, something is out of place. If you can’t spot it, just start over with a new copy from /conf/Application.xml

Richard

A jar file might have any number of Classes inside, the name is not going to indicate what those are.

You don’t need ModuleSecureToken because you already have the ModuleRTMPAuthentication, which includes SecureToken.

Refer to the ModuleRTMPAuthentication section of Security Addon guide.

Richard

With requireSecureConnection you need to use rtmpe protocol in the player.

rtmpe://[wowza-address]/live

Richard

Right, that’s still just malformed Application.xml

If you can’t see the problem, it’s best to get a new copy and start over.

Richard

If you use a new copy and remake your changes it will fix it. Try it.

Richard

I put it in an xml validator:

http://www.xmlvalidation.com/

And I think the problem might be your secret token, the ampersand maybe. Take out the secret token completely, see if that fixes it, then try a new one token, don’t use ampersand.

Richard

When I try it in LiveVideoStreaming example player, the message is “Application rejected connection”. Check the doConnect token.

Try getting it to work in the example player first.

Richard

You have the requireSecureConnection Property set to “true”, so you have to use a secure protocol like rtmpe (or rtmps or rtmpte).

rtmpe://destinyradiotv.org/live

This working for me on the example player. SecureToken is still not setup, or SecureURLParams connect. (SecureToken is better, use that.)

You can add SecureToken to the example player. Look for the NetConnection.Connect.Success notification and add this

if (infoObject.info.code == "NetConnection.Connect.Success")
			{
				[B]if (infoObject.info.secureToken != undefined) //<--- SecureToken change here - respond with decoded secureToken
				{
					var secureResult:Object = new Object();
					secureResult.onResult = function(isSuccessful:Boolean):void
					{
						trace("secureTokenResponse: "+isSuccessful);
					}
					nc.call("secureTokenResponse", new Responder(secureResult.onResult), TEA.decrypt(infoObject.info.secureToken, "sharedSecret"));		
				}[/B]
			}

Richard

Also, copy examples/LiveVideoStreaming/clientFlex/src/com to examples/LiveVideoStreaming/client and add import to Actionscript:

import com.meychi.ascrypt.TEA;

Richard

You recompiled in Flash CS3 or CS4? Were there errors when you did so? Did you debug in Flash CS3? Sounds like there is an error in the Actionscript.

Richard

Does the player come up when you debug?

Richard

I am asking if the player appears in Flash CS3 or CS4 when you you select Debug > Debug Movie from the menu.

Richard