2

Формы Аутентификация не работает. Файлы cookie не отправляются на сервер, когда SMF пытается получить доступ к файлам * .ism/Manifest на сервере, для которого требуются определенные роли пользователя.Microsoft Media Platform + Аутентификация форм

Что я делаю: 1. Создайте новый шаблон Silverlight Smooth Streaming с поддержкой RIA WCF. 2. Настройка web.config:

<connectionStrings> 
<add name="ApplicationServices" connectionString="Data Source=[SERVER];Initial Catalog=[CATALOG];User ID=[USER];Pwd=[PASSWORD];" providerName="System.Data.SqlClient" /> 

<system.web> 
     <authentication mode="Forms"> 
     <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
     </authentication> 
     <membership> 
     <providers> 
      <clear /> 
      <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> 
     </providers> 
     </membership> 
     <profile> 
     <providers> 
      <clear /> 
      <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
     </providers> 
     <properties> 
      <add name="Gender" /> 
      <add name="Birthday" /> 
      <add name="AvatarPath" /> 
     </properties> 
     </profile> 
     <roleManager enabled="true"> 
     <providers> 
      <clear /> 
      <add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" /> 
      <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> 
     </providers> 
     </roleManager> 
  1. Добавить Authentification Сервис и правильный класс пользователя (добавьте 3 реквизита).
  2. На стороне клиента добавьте в App.xaml.cs:
 public App() 
    { 
    //Default things... 
    InitializeWebContext(); 
    } 

    private void InitializeWebContext() 
    { 
     WebContext webContext = new WebContext(); 
     var fa = new FormsAuthentication(); 
     var ac = new AuthenticationDomainService1(); 
     fa.DomainContext = ac; 
     fa.Login(new LoginParameters("user", "password"), (y) => 
                    { 
                     if (!y.HasError) 
                     { 
                      this.RootVisual = new MainPage(); 
                     } 
                    }, null); 
     webContext.Authentication = fa; 
     ApplicationLifetimeObjects.Add(webContext); 
     Resources.Add("WebContext", WebContext.Current); 
    } 

Доступ ограничен web.config файл в целевом каталоге:

<?xml version="1.0" encoding="UTF-8"?> 
    <configuration> 
     <system.web> 
      <authorization> 
      <allow roles="Role_name" />  
      <deny users="*" />          
      </authorization> 
     </system.web> 
    </configuration> 

Пользователь существует в этой роли.

Когда я использую видео по умолчанию, указанное в Xaml (Big Bunny), все в порядке. Но когда я меняю mediasource на путь к зоне с ограниченным доступом на моем сервере, я получаю ошибку доступа. На стороне клиента я получаю пользовательские учетные данные успешно.

Скрипач показывает следующую вещь: При попытке доступа к другим методам resctricted ([RequiresAuthentication]) на RIA WCF, клиент посылает Auth печенье, но когда SMFPlayer пытаются доступ к медиа-источника, что печенье wasn`t отправлено.

Что я пропустил?

ответ

0

Я нашел обходное решение: Если вы передаете файлы потока в подкаталог и ограничите доступ к нему (вместо каталога с файлами ism). Манифест будет выдан анонимным пользователям, но потоки данных предназначены только для зарегистрированных пользователей (когда игрок пытается подключить поток данных, он успешно прикрепляет файлы cookie).

Смежные вопросы