Одностраничные приложения

Предупреждение

В этом руководстве используется устаревшая конечная точка Azure Active Directory версии 1.0. Для новых проектов используйте платформу удостоверений Майкрософт.

Одностраничные приложения (SPA) обычно состоят из интерфейсной части на JavaScript, выполняемой в браузере, и серверной части веб-API, которая выполняется на сервере и реализует бизнес-логику приложения. Дополнительные сведения о неявном предоставлении авторизации и о том, насколько оно подходит для вашего приложения, см. в статье Общие сведения о неявном потоке предоставления OAuth2 в Azure Active Directory (AD).

В этом сценарии при входе пользователя в систему интерфейсная часть JavaScript использует библиотеку проверки подлинности Active Directory для JavaScript (ADAL.JS) и неявное предоставление авторизации для получения маркера идентификатора (id_token) из Azure AD. Маркер кэшируется, а клиент присоединяет его к запросу как маркер носителя при отправке вызовов в свою серверную часть веб-API, для защиты которого применяется ПО промежуточного слоя OWIN.

Схема

Схема одностраничного приложения

Поток использования протокола

  1. Пользователь переходит в веб-приложение.
  2. Приложение возвращает браузеру интерфейс (уровень представления данных) JavaScript.
  3. Пользователь выполняет вход, например щелкает ссылку входа. Браузер отправляет инструкцию GET в конечную точку авторизации Azure AD для запроса идентификатора маркера. Этот запрос содержит идентификатор приложения и URL-адрес ответа.
  4. Azure AD проверяет URL-адрес ответа путем его сравнения с зарегистрированным URL-адресом ответа, который указан на портале Azure.
  5. Пользователь выполняет вход на странице входа.
  6. В случае успешной проверки подлинности Azure AD создает маркер идентификатора и возвращает его в виде фрагмента URL-адреса (#) по URL-адресу ответа приложения. В рабочем приложении для этого URL-адреса ответа должен использоваться протокол HTTPS. Возвращаемый маркер содержит утверждения о пользователе и системе Azure AD, которые требуются приложению для проверки маркера.
  7. Клиентский код JavaScript, выполняемый в браузере, извлекает маркер из ответа для использования при защите вызовов, отправляемых в серверную часть веб-интерфейса API приложения.
  8. Браузер вызывает серверную часть веб-интерфейса API приложения с помощью маркера идентификатора в заголовке авторизации. Служба проверки подлинности Azure AD выдает маркер идентификатора, который можно использовать в качестве маркера носителя, если ресурс совпадает с идентификатором клиента (в таком случае это возможно, так как веб-API является серверной частью приложения).

Примеры кода

Ознакомьтесь с примерами кода для сценариев одностраничного приложения. Периодически проверяйте этот раздел, так как он регулярно пополняется новыми примерами.

Регистрация приложений

  • Одноклиентное. Если создаваемое приложение предназначено только для вашей организации, его необходимо зарегистрировать в каталоге организации с помощью портала Azure.
  • Мультиклиентное приложение. Если создаваемое приложение предназначено для пользователей за пределами вашей организации, его необходимо зарегистрировать как в каталоге вашей организации, так и в каталогах каждой из организаций, пользователи которых будут использовать приложение. Чтобы ваше приложение сделать доступным в чужом каталоге, можно реализовать процесс входа для клиентов, с помощью которого они смогут предоставлять вашему приложению требуемые разрешения. При входе клиентов в приложение для них будет отображаться диалоговое окно с разрешениями, которые требуются приложению. В этом окне также можно будет предоставить требуемые разрешения. В зависимости от необходимых разрешений может потребоваться, чтобы их предоставил администратор из другой организации. Если пользователь или администратор предоставляет требуемые разрешения, приложение регистрируется в их каталоге.

После регистрации приложения его необходимо настроить для использования протокола неявного предоставления разрешения OAuth 2.0. По умолчанию для приложений этот протокол отключен. Чтобы включить для приложения протокол неявного предоставления разрешения OAuth2, измените манифест приложения на портале Azure, установив для параметра oauth2AllowImplicitFlow значение true. Дополнительные сведения см. в статье Манифест приложения Azure Active Directory.

Срок действия маркера

Использование ADAL.js поможет вам:

  • обновить просроченный маркер;
  • запросить маркер доступа для вызова ресурса веб-API.

После успешной проверки подлинности Azure AD записывает файл cookie в браузере пользователя, чтобы установить сеанс. Обратите внимание, что сеанс устанавливается между пользователем и Azure AD, а не между пользователем и веб-приложением. По истечении срока действия маркера файл ADAL.js использует этот сеанс для автоматического получения другого маркера. ADAL.js использует скрытый элемент iFrame, чтобы отправлять и получать запросы по протоколу неявного предоставления разрешения OAuth. ADAL.js также может использовать такой же механизм для автоматического получения маркеров доступа для других ресурсов веб-API, которые приложение может вызывать, пока эти ресурсы поддерживают функцию общего доступа к ресурсам независимо от источника (CORS) и зарегистрированы в каталоге пользователя и пока все необходимые разрешения предоставляются пользователем при входе в систему.

Дальнейшие действия