2010-03-04 14 views
7

Estoy usando VSTS 2008 + C# + .Net 3.5 + Silverlight 3.0 + ASP.Net para desarrollar una aplicación Silverlight (un reproductor multimedia de video) en el navegador y la función es simple, solo use MediaElement para reproducir una archivo de video remotoproblema de descarga de archivos de video

El servidor remoto es Windows Server 2008 + IIS 7.0 + IIS Media Bit Rate Throttling Control.

Dado que se puede descubrir la URL del medio de solicitud (por ejemplo, del rastreador de tráfico), y quiero saber cómo evitar que se descargue directamente desde la URL. es decir, quiero que el usuario final use mi aplicación de reproductor de medios Silverlight en el navegador para reproducir el archivo, evite que descargue directamente a local. ¿Alguna solución o código de referencia o documentos fáciles y rápidos?

+0

¿Cómo se forma la URL de medios? ¿Es una URL que apunta directamente al archivo multimedia en una carpeta? O ¿Está utilizando algún tipo de controlador HTTP para servir archivos multimedia? –

+0

No sé si esto lo ayudará o no, pero Microsoft ha abierto el marco de medios utilizado para los Juegos Olímpicos: http://smf.codeplex.com/ –

Respuesta

1

Podría estar agarrándome aquí, pero ¿qué pasa con usar un manejador HTTP para interceptar solicitudes a la URL de medios: cuando el manejador HTTP encuentra una solicitud, busca un encabezado HTTP único en la solicitud, esto podría ser codificado en su aplicación de reproductor multimedia para que la solicitud de URL vaya acompañada del encabezado de seguridad apropiado, y a menos que el encabezado HTTP esté presente, entonces se bloqueará toda la respuesta. Sé que no hay detalles específicos aquí, pero es una idea de todos modos.

1
  1. Utilice la ASP.NET Authentication Service para autenticar/autorizar a su usuario
  2. poner el vídeo en una carpeta en el web.config impide el acceso autenticado por la ONU al contenido

Si no me equivoco (y para ser sincero, existe la posibilidad de que nunca haya probado este escenario en particular) ... que protegerá su contenido de video, mientras permite que el usuario autorizado acceda a él a través de Silverlight.

+0

Creo que no está interesado en autenticar al usuario al proporcionar un nombre de usuario-contraseña. Su pregunta es muy simple.Una página web normal tiene una aplicación Silverlight. La aplicación solicita un recurso de video desde alguna ubicación xyz. Puede ser una subcarpeta debajo de su raíz. Él quiere que el usuario evite acceder a él directamente. Como la aplicación Silverlight lo solicita al cliente, no puede colocarlo en alguna carpeta app_data o bin. – Manjoor

+0

lo que le interesa es autorizar solicitudes que provienen de la aplicación silverlight. Como es solo un cliente como cualquier otro, puede hacer que inicie sesión utilizando el servicio de autenticación con un nombre de usuario y una contraseña conocidos que comparten todos los usuarios de la aplicación silverlight. De esta forma, si un usuario intenta acceder a él directamente a través de la URL, se le negará –

0

Lo que Joel sugirió antes podría tener sentido. Especialmente si la aplicación web de alojamiento de Silverlight se ejecutaba en un grupo de aplicaciones que se ejecutaba bajo una identidad particular (es decir, "svcMyVideoApp"). Entonces podría hacerlo donde solo esta identidad podría acceder a la carpeta de contenido. Establezca todas las demás solicitudes de contenido para denegar (excepto tal vez la suya :))

0

Si no me equivoco ... si está configurado correctamente, los servicios de medios de IIS 7 ni siquiera deberían servir los archivos brutos ni más ni menos debe servir una página sin formato "aspx" sin procesar.

Solo jugué hace unos meses, pero cuando instalé el complemento de medios para IIS 7, no estaba sirviendo los archivos de medios sin formato, y solo pude acceder a ellos a través de una interfaz de Silverlight. Utilicé Expression Studio para crear mi página de espectadores de Silverlight y la codifiqué para una "transmisión fluida".

0

Una manera simple sería agregar un controlador para captar la solicitud como dijo @pb. No sé si enviar encabezados es lo correcto o no. Una forma sencilla sería que acaba de comprobar si la solicitud tiene un referente ..

String.IsNullOrEmpty (context.Request.ServerVariables [ "HTTP_REFERER"])

o que necesita la autenticación y enviar la cookie de autenticación con la solicitud

Cuestiones relacionadas