Пример кода: страница пользовательского входа ASP.NET MVC 3
Обновлено: 19 июня 2015 г.
Область применения: Azure
В этом примере показано, как создать пользовательскую страницу входа или обнаружения домашней области в приложении ASP.NET MVC3, которое использует Microsoft Azure Active Directory контроль доступа (также называемое службой контроль доступа или ACS). Код для этого примера находится в подкаталоге MVC3CustomSignInPage (C#\Websites\MVC3CustomSignInPage) пакета примеров кода Microsoft Azure Active Directory контроль доступа (ACS).
Предварительные требования
Для запуска этого примера потребуется:
Учетная запись в портал Azure и пространстве имен контроль доступа.
Visual Studio 2010 (любая версия)
Пакет SDK Windows Identity Foundation.
Дополнительные сведения см. в разделе "Предварительные требования ACS " (https://go.microsoft.com/fwlink/?LinkId=221065).
Настройка примера
Конфигурацию ACS, необходимую для этого примера, можно выполнить с помощью портала управления ACS или службы управления ACS. В этом разделе описываются оба варианта.
Вариант 1. Настройка примера с помощью портала управления ACS
Настройка примера на портале управления ACS
Перейдите на портал управления Microsoft Azure (https://manage.WindowsAzure.com), войдите в систему и щелкните Active Directory. (Совет по устранению неполадок: элемент Active Directory отсутствует или недоступен)
Чтобы создать пространство имен Access Control, щелкните Создать, Службы приложений, Управление доступом, а затем выберите Быстрое создание. (Или щелкните Пространства имен Access Control перед тем, как щелкнуть Создать.)
Для выполнения управления пространством имен Access Control выберите пространство имен и щелкните Управление. (Или щелкните Пространства имен Access Control, выберите пространство имен, а затем щелкните Управление.)
Это действие открывает портал управления Access Control Service.
Чтобы установить отношения с поставщиками удостоверений, которые будут использовать для входа посетители вашего веб-сайта, щелкните ссылку Поставщики удостоверений и добавьте нужные поставщики удостоверений, например Google, Yahoo! и Facebook. Дополнительные сведения о том, как получить необходимые ключи для Facebook, см. в разделе "Практическое руководство. Настройка Facebook в качестве поставщика удостоверений (https://go.microsoft.com/fwlink/?LinkId=221151). Затем щелкните ссылку Начальная в меню навигации слева на странице, чтобы вернуться на главную страницу.
Чтобы зарегистрировать приложение в ACS, на портале управления службами контроль доступа щелкните ссылку "Приложения проверяющей стороны", расположенную на главной странице, выберите "Добавить" и введите следующие сведения в форме:
В поле Имя введите ASPNET MVC3 Custom.
В поле "Область " введите https://localhost:64000/
В поле "Возвращаемый URL-адрес" введите https://localhost:64000/Account/SignIn
В поле Формат токенов выберите SAML 2.0.
В разделе Поставщики удостоверений выберите Facebook, Google, Windows Live ID и Yahoo!.
В поле Подпись токена выберите Использовать сертификат пространства имен службы (стандартный).
Нажмите кнопку Сохранить и перейдите на главную страницу.
Настроив приложение проверяющей стороны, пришло время создать правила, определяющие утверждения, которые будут выдаваться приложению ACS. В этом примере мы просто передадим все утверждения, выданные поставщиками удостоверений. Чтобы создать соответствующее правило, выберите на главной странице раздел Группы правил, а затем щелкните пункт Группа правил по умолчанию для ASPNET MVC3 Custom.
В нижней части страницы щелкните ссылку Создать. Убедитесь, что Facebook, Yahoo и выбраны и нажмите кнопку "Создать".
После настройки ACS откройте Visual Studio.
Вариант 2. Настройка примера с помощью службы управления ACS
В примере решения Visual Studio есть приложение командной строки с именем ConfigureSample, которое использует службу управления ACS и общие вспомогательные функции, определенные в библиотеке общих классов. Это приложение можно использовать для настройки пространства имен контроль доступа для использования с этим примером.
Настройка примера с помощью службы управления ACS
Обновите библиотеку общих классов с информацией о пространстве имен контроль доступа. Откройте файл SamplesConfiguration.cs и введите следующие сведения:
ServiceNamespace — это пространство имен, используемое с ACS.
ManagementServiceIdentityName — это имя учетной записи службы управления.
ManagementServiceIdentityKey — это пароль учетной записи службы управления.
AcsHostUrl — это имя узла ACS.
В проекте ConfigureSample откройте файл Program.cs и введите следующее:
applicationId — это идентификатор вашего приложения на Facebook.
applicationSecret — это секретный код приложения на Facebook.
Дополнительные сведения о получении этих ключей см. в разделе "Практическое руководство. Настройка Facebook в качестве поставщика удостоверений (https://go.microsoft.com/fwlink/?LinkId=221151).
Запустите приложение ConfigureSample в Visual Studio, которое настроит ACS для запуска этого примера.
Запуск примера
Выполнение образца
Откройте пример, расположенный в веб-сайтах\MVC3CustomSignInPage\MVC3CustomSignInPage.sln в Visual Studio.
Чтобы добавить ACS в качестве ссылки на STS, щелкните правой кнопкой мыши MVCCustomSignInPage и выберите команду "Добавить ссылку stS " в контекстном меню.
В диалоговом окне введите корень веб-приложения в поле Универсальный код ресурса приложения и нажмите кнопку Далее. Для этого примера это значение равно https://localhost:64000/
Примечание
Завершающая косая черта важна, так как она соответствует значениям, введенным в ACS для проверяющей стороны. Мастер отобразит предупреждение, что сайт не использует SSL. Примите предупреждение, щелкнув кнопку Да, но помните, что рабочий веб-сайт должен практически всегда использовать SSL для таких типов сценариев.
В следующем окне выберите переключатель Use Existing STS и введите URI метаданных WS-Federation, опубликованных пространством имен контроль доступа. Такой универсальный код ресурса можно найти на портале в разделе Интеграция приложений. Если пространство имен контроль доступа — mvc3samples, URI будет https:// mvc3samples.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml. После того как вы введете значение, нажмите кнопку Далее.
Поскольку ваш веб-сайт не требует зашифрованных токенов, нажмите кнопку Далее в оставшихся диалоговых окнах, а затем — Готово.
Теперь приложение настроено для использования ACS с asp .NET защиты ресурсов. Эту защиту следует отключить, чтобы иметь возможность использовать настраиваемую страницу входа с более детализированными фильтрами проверки подлинности MVC3. В файле web.config в разделе configuration удалите следующий параметр:
<location path="FederationMetadata"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
В разделе system.web удалите следующий параметр:
<authorization> <deny users="?" /> </authorization>
После удаления этих параметров платформа ASP.NET не будет проверять подлинность и выполнять авторизацию от лица нашего приложения.
Нажмите клавишу F5 в Visual Studio, чтобы запустить приложение. В браузере откроется главная страница приложения.
Щелкните ссылку Sign In (Вход) в правом верхнем углу и выберите поставщик удостоверений в появившемся списке. После проверки подлинности вы вернеесь на домашнюю страницу, а сведения о пользователе будут отображаться в правом верхнем углу (обратите внимание, что имя пользователя не указано).
Щелкните ссылку Log Off (Выход), чтобы выйти. При этом будут удалены файлы cookie сеанса, и вы вернетесь на главную страницу.
Щелкните ссылку Directory (Каталог). Поскольку вы больше не считаетесь пользователем, прошедшим проверку подлинности, вам будет предложено выбрать поставщик удостоверений для доступа к странице Directory.
Это обусловлено тем, что страница Directory (Index в DirectoryController) защищена атрибутом RequireAuthenticationAttribute. Выбрав поставщик удостоверений и пройдя проверку подлинности, вы снова попадете на страницу Directory.