Пример кода: страница пользовательского входа ASP.NET MVC 3

Обновлено: 19 июня 2015 г.

Область применения: Azure

В этом примере показано, как создать пользовательскую страницу входа или обнаружения домашней области в приложении ASP.NET MVC3, которое использует Microsoft Azure Active Directory контроль доступа (также называемое службой контроль доступа или ACS). Код для этого примера находится в подкаталоге MVC3CustomSignInPage (C#\Websites\MVC3CustomSignInPage) пакета примеров кода Microsoft Azure Active Directory контроль доступа (ACS).

Предварительные требования

Для запуска этого примера потребуется:

  1. Учетная запись в портал Azure и пространстве имен контроль доступа.

  2. Visual Studio 2010 (любая версия)

  3. ASP .NET MVC3 (https://www.asp.net/mvc/mvc3)

  4. Пакет SDK Windows Identity Foundation.

Дополнительные сведения см. в разделе "Предварительные требования ACS " (https://go.microsoft.com/fwlink/?LinkId=221065).

Настройка примера

Конфигурацию ACS, необходимую для этого примера, можно выполнить с помощью портала управления ACS или службы управления ACS. В этом разделе описываются оба варианта.

Вариант 1. Настройка примера с помощью портала управления ACS

Настройка примера на портале управления ACS

  1. Перейдите на портал управления Microsoft Azure (https://manage.WindowsAzure.com), войдите в систему и щелкните Active Directory. (Совет по устранению неполадок: элемент Active Directory отсутствует или недоступен)

  2. Чтобы создать пространство имен Access Control, щелкните Создать, Службы приложений, Управление доступом, а затем выберите Быстрое создание. (Или щелкните Пространства имен Access Control перед тем, как щелкнуть Создать.)

  3. Для выполнения управления пространством имен Access Control выберите пространство имен и щелкните Управление. (Или щелкните Пространства имен Access Control, выберите пространство имен, а затем щелкните Управление.)

    Это действие открывает портал управления Access Control Service.

  4. Чтобы установить отношения с поставщиками удостоверений, которые будут использовать для входа посетители вашего веб-сайта, щелкните ссылку Поставщики удостоверений и добавьте нужные поставщики удостоверений, например Google, Yahoo! и Facebook. Дополнительные сведения о том, как получить необходимые ключи для Facebook, см. в разделе "Практическое руководство. Настройка Facebook в качестве поставщика удостоверений (https://go.microsoft.com/fwlink/?LinkId=221151). Затем щелкните ссылку Начальная в меню навигации слева на странице, чтобы вернуться на главную страницу.

  5. Чтобы зарегистрировать приложение в ACS, на портале управления службами контроль доступа щелкните ссылку "Приложения проверяющей стороны", расположенную на главной странице, выберите "Добавить" и введите следующие сведения в форме:

    • В поле Имя введите ASPNET MVC3 Custom.

    • В поле "Область " введите https://localhost:64000/

    • В поле "Возвращаемый URL-адрес" введите https://localhost:64000/Account/SignIn

    • В поле Формат токенов выберите SAML 2.0.

    • В разделе Поставщики удостоверений выберите Facebook, Google, Windows Live ID и Yahoo!.

    • В поле Подпись токена выберите Использовать сертификат пространства имен службы (стандартный).

  6. Нажмите кнопку Сохранить и перейдите на главную страницу.

  7. Настроив приложение проверяющей стороны, пришло время создать правила, определяющие утверждения, которые будут выдаваться приложению ACS. В этом примере мы просто передадим все утверждения, выданные поставщиками удостоверений. Чтобы создать соответствующее правило, выберите на главной странице раздел Группы правил, а затем щелкните пункт Группа правил по умолчанию для ASPNET MVC3 Custom.

  8. В нижней части страницы щелкните ссылку Создать. Убедитесь, что Facebook, Yahoo и выбраны и нажмите кнопку "Создать".

  9. После настройки ACS откройте Visual Studio.

Вариант 2. Настройка примера с помощью службы управления ACS

В примере решения Visual Studio есть приложение командной строки с именем ConfigureSample, которое использует службу управления ACS и общие вспомогательные функции, определенные в библиотеке общих классов. Это приложение можно использовать для настройки пространства имен контроль доступа для использования с этим примером.

Настройка примера с помощью службы управления ACS

  1. Обновите библиотеку общих классов с информацией о пространстве имен контроль доступа. Откройте файл SamplesConfiguration.cs и введите следующие сведения:

    • ServiceNamespace — это пространство имен, используемое с ACS.

    • ManagementServiceIdentityName — это имя учетной записи службы управления.

    • ManagementServiceIdentityKey — это пароль учетной записи службы управления.

    • AcsHostUrl — это имя узла ACS.

  2. В проекте ConfigureSample откройте файл Program.cs и введите следующее:

    1. applicationId — это идентификатор вашего приложения на Facebook.

    2. applicationSecret — это секретный код приложения на Facebook.

    Дополнительные сведения о получении этих ключей см. в разделе "Практическое руководство. Настройка Facebook в качестве поставщика удостоверений (https://go.microsoft.com/fwlink/?LinkId=221151).

  3. Запустите приложение ConfigureSample в Visual Studio, которое настроит ACS для запуска этого примера.

Запуск примера

Выполнение образца

  1. Откройте пример, расположенный в веб-сайтах\MVC3CustomSignInPage\MVC3CustomSignInPage.sln в Visual Studio.

  2. Чтобы добавить ACS в качестве ссылки на STS, щелкните правой кнопкой мыши MVCCustomSignInPage и выберите команду "Добавить ссылку stS " в контекстном меню.

  3. В диалоговом окне введите корень веб-приложения в поле Универсальный код ресурса приложения и нажмите кнопку Далее. Для этого примера это значение равно https://localhost:64000/

    Примечание

    Завершающая косая черта важна, так как она соответствует значениям, введенным в ACS для проверяющей стороны. Мастер отобразит предупреждение, что сайт не использует SSL. Примите предупреждение, щелкнув кнопку Да, но помните, что рабочий веб-сайт должен практически всегда использовать SSL для таких типов сценариев.

  4. В следующем окне выберите переключатель Use Existing STS и введите URI метаданных WS-Federation, опубликованных пространством имен контроль доступа. Такой универсальный код ресурса можно найти на портале в разделе Интеграция приложений. Если пространство имен контроль доступа — mvc3samples, URI будет https:// mvc3samples.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml. После того как вы введете значение, нажмите кнопку Далее.

  5. Поскольку ваш веб-сайт не требует зашифрованных токенов, нажмите кнопку Далее в оставшихся диалоговых окнах, а затем — Готово.

  6. Теперь приложение настроено для использования ACS с asp .NET защиты ресурсов. Эту защиту следует отключить, чтобы иметь возможность использовать настраиваемую страницу входа с более детализированными фильтрами проверки подлинности MVC3. В файле web.config в разделе configuration удалите следующий параметр:

    <location path="FederationMetadata">
       <system.web>
         <authorization>
           <allow users="*" />
         </authorization>
       </system.web>
    </location>
    
  7. В разделе system.web удалите следующий параметр:

    <authorization>
         <deny users="?" />
       </authorization>
    

    После удаления этих параметров платформа ASP.NET не будет проверять подлинность и выполнять авторизацию от лица нашего приложения.

  8. Нажмите клавишу F5 в Visual Studio, чтобы запустить приложение. В браузере откроется главная страница приложения.

  9. Щелкните ссылку Sign In (Вход) в правом верхнем углу и выберите поставщик удостоверений в появившемся списке. После проверки подлинности вы вернеесь на домашнюю страницу, а сведения о пользователе будут отображаться в правом верхнем углу (обратите внимание, что имя пользователя не указано).

  10. Щелкните ссылку Log Off (Выход), чтобы выйти. При этом будут удалены файлы cookie сеанса, и вы вернетесь на главную страницу.

  11. Щелкните ссылку Directory (Каталог). Поскольку вы больше не считаетесь пользователем, прошедшим проверку подлинности, вам будет предложено выбрать поставщик удостоверений для доступа к странице Directory.

Это обусловлено тем, что страница Directory (Index в DirectoryController) защищена атрибутом RequireAuthenticationAttribute. Выбрав поставщик удостоверений и пройдя проверку подлинности, вы снова попадете на страницу Directory.