Подключение веб-приложения ASP.NET с использованием проверки подлинности с помощью форм с помощью поставщика SqlMembership в Azure

Я экспериментирую с порталом Microsoft Azure, чтобы увидеть, как мое устаревшее приложение работает с наименьшим количеством переписывания. Аутентификация - это проблема.

Справочная информация: это веб-приложение ASP.NET в настоящее время использует поставщика SqlMembership для пользователей, ролей, профилей и персонализации. Да, было много блогов о ASP.NET Identity, Простом членстве, Универсальных провайдерах и о том, что SqlMembership Provider asp.net постепенно сокращается. Но, если возможно, я бы все же предпочел использовать устаревшее членство asp.net в Azure.

В настоящее время я могу опубликовать свое решение VS.NET 2013 в Azure, но не могу войти в систему. Как только я перехожу к URL-адресу, он автоматически регистрируется как пользователь портала Azure. Кажется, что аутентификация Windows активна, а не формы. Вот как я сюда попал:

Я создал таблицы членства sql в Sql Azure, используя специальные дружественные к Azure сценарии для Sql Azure (здесь:https://support.microsoft.com/kb/2006191).

Однако, когда я запускаю свое приложение на сайте Azure по сравнению с локальным, я вижу другое поведение. В Azure применяется другой механизм аутентификации: сначала мне предлагают войти в систему с моим организационным идентификатором (это мой адрес электронной почты msdn), затем после ввода имени для входа в Azure я автоматически регистрируюсь в своем приложении как live.com # [email protected], и я не перенаправлен на default.aspx, но login.aspx и ни одно из меню web.sitemap не отображаются, кроме тех, которые доступны для пользователей, не прошедших проверку подлинности. Я также создал второго пользователя на портале [email protected], и мне будет предложено войти в систему в режиме реального времени, после чего я автоматически войду в приложение. По сути, это действует как проверка подлинности Windows, а не проверка подлинности форм. (Пояснение: позже я узнал, что это поведение Azure Active Directory.)

Напротив, когда мое приложение запускается локально (по сравнению с NET 2013) со строками подключения, указывающими на один и тот же источник данных sql azure (таблицы членства), я вхожу, как и ожидалось: я ввожу свое имя пользователя / пароль для членства и вижу свой страница по умолчанию и страницы, связанные с моими ролями, доступны, пользователь существует в таблице пользователей и т. д. Очевидно, что моя локальная среда выполнения и azure отличаются, и кажется, что Azure каким-то образом переопределяет настройки моего поставщика web.config и использует свой собственный механизм.

Мой web.config:

<authentication mode="Forms">
   <forms cookieless="UseCookies" defaultUrl="~/Default.aspx" loginUrl="~/PagesAnon/userLogin.aspx" requireSSL="false" slidingExpiration="true" timeout="45" />
</authentication>
<membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="2">
 <providers>
    <clear />
    <remove name="AspNetSqlMembershipProvider" />
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="4" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
  </providers>
</membership>
<roleManager defaultProvider="AspNetSqlRoleProvider" enabled="true" cacheRolesInCookie="true">
  <providers>
    <clear />
    <remove name="AspNetSqlRoleProvider" />
    <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </providers>
</roleManager>

Ответы на вопрос(1)

Ваш ответ на вопрос