Разработка приложений ASP.NET с Azure Active Directory
Средства Microsoft ASP.NET для Azure Active Directory упрощают проверку подлинности для веб-приложений, размещенных в Azure. Вы можете использовать проверку подлинности Azure для проверки подлинности Office 365 пользователей из организации, корпоративных учетных записей, синхронизированных из локальной службы Active Directory, или пользователей, созданных в пользовательском домене Azure Active Directory. Включение проверки подлинности Windows Azure позволяет настроить приложение для проверки подлинности пользователей с помощью одного клиента Azure Active Directory .
В этом руководстве показано, как создать приложение ASP.NET, настроенное для входа в Azure Active Directory (Azure AD). Вы также узнаете, как вызвать API Graph, чтобы получить сведения о вошедшего в систему пользователя и как развернуть приложение в Azure.
Предварительные требования
- Visual Studio Express 2013 для веб-приложений или Visual Studio 2013.
- обновление 4 для Visual Studio 2013 — требуется обновление 3 или более поздней версии.
- Учетная запись Azure. Щелкните здесь , чтобы получить бесплатную пробную версию, если у вас еще нет учетной записи.
Добавление глобального администратора в Active Directory
Войдите на портал управления Azure.
Все учетные записи Azure содержат каталог по умолчанию . Щелкните его, а затем перейдите на вкладку Пользователи в верхней части страницы (см. изображение ниже).
Щелкните "Добавить пользователя".
Создайте нового пользователя с ролью глобального администратора . В верхнем меню щелкните Пользователи , а затем нажмите кнопку Добавить пользователя на панели команд.
В диалоговом окне Добавление пользователя введите имя нового пользователя и щелкните стрелку вправо.
Введите имя пользователя и задайте роль Глобальный администратор. Глобальным администраторам требуется альтернативный адрес электронной почты для восстановления пароля. По завершении щелкните стрелку вправо.
На следующей странице диалогового окна нажмите кнопку Создать. Для нового пользователя будет создан временный пароль, который отобразится в диалоговом окне.
Сохраните пароль. Вам потребуется изменить пароль после первого входа в систему. На следующем рисунке показана новая учетная запись администратора. Для входа в приложение необходимо использовать Azure Active Directory, а не учетную запись Майкрософт, также показанную на этой странице.
Создание приложения ASP.NET
В следующих шагах используется Visual Studio Express 2013 для Web и требуется Visual Studio 2013 обновление 3.
В Visual Studio щелкните Файл , а затем — Создать проект. В диалоговом окне Новый проект выберите веб-проект Visual C# в меню слева и нажмите кнопку ОК. Вы также можете снять флажок Добавить Application Insights в Проект , если вам не нужны функциональные возможности приложения.
В диалоговом окне Новый проект ASP.NET выберите MVC, а затем щелкните Изменить проверку подлинности.
В диалоговом окне Изменение проверки подлинности выберите Учетные записи организации. Эти параметры можно использовать для автоматической регистрации приложения в Azure AD а также для автоматической настройки приложения для интеграции с Azure AD. Вам не нужно использовать диалоговое окно Изменение проверки подлинности для регистрации и настройки приложения, но это значительно упрощает его. Например, если вы используете Visual Studio 2012, вы по-прежнему можете вручную зарегистрировать приложение на портале управления Azure и обновить его конфигурацию для интеграции с Azure AD. В раскрывающихся меню выберите Облако — отдельная организация и Единый вход, Чтение данных каталога. Введите домен для каталога Azure AD, например (на рисунках ниже) aricka0yahoo.onmicrosoft.com, а затем нажмите кнопку ОК. Доменное имя можно получить на вкладке Домены для каталога по умолчанию на портале Azure (см. следующее изображение).
На следующем рисунке показано доменное имя из портал Azure.
Примечание
При необходимости можно настроить URI идентификатора приложения, который будет зарегистрирован в Azure AD, щелкнув Дополнительные параметры. URI идентификатора приложения — это уникальный идентификатор приложения, который регистрируется в Azure AD и используется приложением для идентификации при взаимодействии с Azure AD. Дополнительные сведения о URI идентификатора приложения и других свойствах зарегистрированных приложений см. в этой статье. Установив флажок под полем URI идентификатора приложения, вы также можете перезаписать существующую регистрацию в Azure AD, использующем тот же URI идентификатора приложения.
После нажатия кнопки ОК откроется диалоговое окно входа, и вам потребуется войти с помощью учетной записи глобального администратора (а не учетной записи Майкрософт, связанной с вашей подпиской). Если вы создали новую учетную запись администратора ранее, вам потребуется изменить пароль, а затем снова войти, используя новый пароль.
После успешной проверки подлинности в диалоговом окне Создать проект ASP.NET отобразится выбор проверки подлинности (организация ) и каталог, в котором будет зарегистрировано новое приложение (aricka0yahoo.onmicrosoft.com на рисунке ниже). Под этой информацией установите флажок Host in the cloud (Узел в облаке). Если этот флажок установлен, проект будет подготовлен как веб-приложение Azure и будет включен для удобной публикации позже. Нажмите кнопку ОК.
Откроется диалоговое окно Настройка веб-сайта Azure с автоматически созданным именем сайта и регионом. Также обратите внимание на учетную запись, в которую вы вошли в данный момент в диалоговом окне. Вы хотите убедиться, что эта учетная запись является учетной записью, к которой подключена ваша подписка Azure( обычно это учетная запись Майкрософт).
Примечание
Для этого проекта требуется база данных. Необходимо выбрать одну из существующих баз данных или создать новую. База данных является обязательной, так как проект уже использует локальный файл базы данных для хранения небольшого объема данных конфигурации проверки подлинности. При развертывании приложения на веб-сайте Azure эта база данных не упакована вместе с развертыванием, поэтому необходимо выбрать ту, которая доступна в облаке. Нажмите кнопку ОК.
Проект будет создан, а параметры проверки подлинности и параметры веб-приложения будут автоматически настроены вместе с проектом. После завершения этого процесса запустите проект локально, нажав кнопку ^F5. Вам потребуется выполнить вход с помощью учетной записи организации. Укажите имя пользователя и пароль для созданной ранее учетной записи и нажмите кнопку Войти.
После успешного входа на сайте ASP.NET отобразится, что вы прошли проверку подлинности, указав имя пользователя в правом верхнем углу страницы.
Если появляется сообщение об ошибке: Значение не может быть пустым или пустым. Имя параметра:
См. раздел отладки в конце руководства.
Основы API Graph
API Graph — это программный интерфейс, используемый для выполнения CRUD и других операций с объектами в каталоге Azure AD. Если при создании проекта в Visual Studio 2013 выбран параметр Учетная запись организации для проверки подлинности, приложение уже будет настроено для вызова API Graph. В этом разделе кратко показано, как работает API Graph.
В запущенном приложении щелкните имя пользователя, выполнившего вход, в правом верхнем углу страницы. Откроется страница Профиля пользователя, которая является действием на домашнем контроллере. Вы заметите, что таблица содержит сведения о пользователе учетной записи администратора, созданной ранее. Эти сведения хранятся в каталоге, а API Graph вызывается для получения этих сведений при загрузке страницы.
Назад в Visual Studio, разверните папку Контроллеры, а затем откройте файл HomeController.cs. Вы увидите действие UserProfile(), содержащее код для получения маркера, а затем вызовите API Graph. Этот код дублируется ниже:
[Authorize] public async Task UserProfile() { string tenantId = ClaimsPrincipal.Current.FindFirst(TenantIdClaimType).Value; // Get a token for calling the Azure Active Directory Graph AuthenticationContext authContext = new AuthenticationContext(String.Format(CultureInfo.InvariantCulture, LoginUrl, tenantId)); ClientCredential credential = new ClientCredential(AppPrincipalId, AppKey); AuthenticationResult assertionCredential = authContext.AcquireToken(GraphUrl, credential); string authHeader = assertionCredential.CreateAuthorizationHeader(); string requestUrl = String.Format( CultureInfo.InvariantCulture, GraphUserUrl, HttpUtility.UrlEncode(tenantId), HttpUtility.UrlEncode(User.Identity.Name)); HttpClient client = new HttpClient(); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); request.Headers.TryAddWithoutValidation("Authorization", authHeader); HttpResponseMessage response = await client.SendAsync(request); string responseString = await response.Content.ReadAsStringAsync(); UserProfile profile = JsonConvert.DeserializeObject<UserProfile>(responseString); return View(profile); }
Чтобы вызвать API Graph, сначала необходимо получить маркер. При извлечении маркера его строковое значение должно быть добавлено в заголовок Authorization для всех последующих запросов к API Graph. Большая часть приведенного выше кода обрабатывает сведения о проверке подлинности в Azure AD для получения маркера, использования маркера для вызова API Graph, а затем преобразования ответа, чтобы его можно было представить в представлении.
Наиболее релевантной частью для обсуждения является следующая выделенная строка:
UserProfile profile = JsonConvert.DeserializeObject<UserProfile>(responseString);
. Эта строка представляет имя пользователя, которое было десериализовано из ответа JSON и представлено в представлении.Вы можете вызвать API Graph с помощью HttpClient и самостоятельно обрабатывать необработанные данные, но проще использовать клиентская библиотека Graph, доступная через NuGet. Клиентская библиотека обрабатывает необработанные HTTP-запросы и преобразование возвращаемых данных и значительно упрощает работу с API Graph в среде .NET. См. соответствующие примеры кода API Graph на сайте GitHub.
Развертывание приложения в Azure
Ниже показано, как развернуть приложение в Azure. На предыдущих шагах вы подключили новый проект к веб-приложению в Azure, чтобы его можно было опубликовать всего за несколько шагов.
В Visual Studio щелкните правой кнопкой мыши проект и выберите Опубликовать. Откроется диалоговое окно Публикация веб-страницы с настроенными параметрами. Нажмите кнопку Далее , чтобы перейти на страницу Параметры . Может появиться запрос на проверку подлинности; Убедитесь, что вы проходите проверку подлинности с помощью учетной записи подписки Azure (обычно это учетная запись Майкрософт), а не учетной записи организации, созданной ранее.
Установите флажок Включить проверку подлинности организации . В поле Домен введите домен для каталога. В раскрывающемся списке Уровень доступа выберите Единый вход, Чтение данных каталога. Вы заметите, что предыдущая используемая база данных уже заполнена в разделе Базы данных . Нажмите кнопку Опубликовать.
Visual Studio начнет развертывание веб-сайта, а затем появится новое окно браузера. Может появиться запрос на проверку подлинности в каталоге еще раз. После проверки подлинности вы будете перенаправлены на недавно опубликованный веб-сайт в Azure.
Отладка приложения
Если возникает следующая ошибка: Значение не может быть пустым или пустым. Имя параметра: linkText
Замените код в файле Views\Shared\_LoginPartial.cshtml следующим кодом:
@{
var user = "Null User";
if (!String.IsNullOrEmpty(User.Identity.Name))
{
user = User.Identity.Name;
}
}
@if (Request.IsAuthenticated)
{
<text>
<ul class="nav navbar-nav navbar-right">
<li>
@*@Html.ActionLink(User.Identity.Name, "UserProfile", "Home", routeValues: null, htmlAttributes: null)*@
@Html.ActionLink(user, "UserProfile", "Home", routeValues: null, htmlAttributes: null)
</li>
<li>
@Html.ActionLink("Sign out", "SignOut", "Account")
</li>
</ul>
</text>
}
else
{
<ul class="nav navbar-nav navbar-right">
<li>@Html.ActionLink("Sign in", "Index", "Home", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
</ul>
}
Если после запуска приложения для вошедшего пользователя отображается значение "Пустой пользователь", выйдите из системы и снова войдите с помощью созданной ранее учетной записи Active Directory.
Отличное руководство для выполнения — глубокое погружение Рика Рейни: веб-сайты Azure и проверка подлинности организации с использованием Azure AD.
Дополнительные сведения
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по