Основные понятия Ad FS OpenID Подключение/OAuth
Применимо к службы федерации Active Directory (AD FS) (AD FS) 2016 и более поздних версий
Современные субъекты проверки подлинности
Субъект | Description |
---|---|
Трафик | Субъект безопасности (пользователи, приложения, службы и группы), который обращается к ресурсу. |
Клиент | Веб-приложение, определяемое его идентификатором клиента. Клиент обычно является стороной, с которым взаимодействует конечный пользователь, и клиентские маркеры запрашивают от сервера авторизации. |
Сервер авторизации или поставщик удостоверений (IdP) | Сервер AD FS. Он отвечает за проверку удостоверения субъектов безопасности, существующих в каталоге организации. Он выдает маркеры безопасности (маркер доступа носителя, маркер идентификатора и маркер обновления) после успешной проверки подлинности этих субъектов безопасности. |
Сервер ресурсов, поставщик ресурсов или проверяющая сторона | Где находится ресурс или данные. Он доверяет серверу авторизации для безопасной проверки подлинности и авторизации клиента и использует маркеры доступа носителя, чтобы обеспечить доступ к ресурсу. |
На следующей схеме представлена самая базовая связь между субъектами:
Типы приложений
Тип приложения | Description | Role |
---|---|---|
Собственное приложение | Иногда называется общедоступным клиентом. Он предназначен для клиентского приложения, работающего на компьютере или устройстве, с которым взаимодействует пользователь. | Запрашивает маркеры с сервера авторизации (AD FS) для доступа пользователей к ресурсам. Отправляет HTTP-запросы в защищенные ресурсы с помощью маркеров в качестве заголовков HTTP. |
Серверное приложение (веб-приложение) | Веб-приложение, которое работает на сервере и доступно пользователям через браузер. Так как он способен поддерживать собственный секрет клиента или учетные данные, иногда он называется конфиденциальным клиентом. | Запрашивает маркеры с сервера авторизации (AD FS) для доступа пользователей к ресурсам. Прежде чем запрашивать маркер, клиент (веб-приложение) должен пройти проверку подлинности с помощью секрета. |
веб-API | Конечный ресурс, к которому обращается пользователь. Подумайте об этом как о новом представлении проверяющих сторон. | Использует маркеры доступа носителя, полученные клиентами. |
Группа приложений
Необходимо связать группу приложений с каждым собственным или веб-клиентом OAuth или ресурсом веб-API, настроенным с помощью AD FS. Настройте клиенты в группе приложений для доступа к ресурсам в той же группе. Группа приложений может иметь несколько клиентов и ресурсов.
Маркеры безопасности Центра Интернета вещей
Современная проверка подлинности использует следующие типы маркеров:
- id_token: маркер JWT, выданный сервером авторизации (AD FS) и используемым клиентом. Утверждения в маркере идентификатора содержат сведения о пользователе, чтобы клиент смог использовать его.
- access_token: маркер JWT, выданный сервером авторизации (AD FS) и предназначенным для использования ресурсом. Утверждение "aud" или аудитории этого маркера должно соответствовать идентификатору ресурса или веб-API.
- refresh_token: выдан AD FS для клиента, который должен использовать, когда необходимо обновить id_token и access_token. Маркер непрозрачн для клиента и используется только AD FS.
Время существования маркера обновления
- Простой вход, без KMSI, устройство не зарегистрировано: AD FS применяется
SsoLifetime
иDeviceUsageWindowInDays
. Первый маркер обновления имеетlifetime=DeviceUsageWindowInDays
илиSsoLifetime
, на основе которого поле ниже, но не выдаются дополнительные маркеры обновления. - Вход
EnableKmsi=true
KMSI в конференц-связь AD FS иkmsi=true
передается в качестве параметра: AD FS применяетсяKmsiLifetimeMins
кDeviceUsageWindowInDays
. Первый маркер обновления имеет иlifetime=DeviceUsageWindowInDays
каждый последующийgrant_type=refresh_token
запрос получает новый маркер обновления. Этот процесс происходит только с собственными клиентами или конфиденциальными клиентами и проверкой подлинности устройств. - Зарегистрированные устройства, проверка подлинности устройств: AD FS использует
PersistentSsoLifetimeMins
иDeviceUsageWindowInDays
аналогично KMSI. Как собственные, так и конфиденциальные клиенты должны получать новые маркеры обновления на основе проверки подлинности устройства.
Дополнительные сведения см . в документации по единому входу AD FS.
Области
При регистрации ресурса в AD FS можно настроить область, чтобы разрешить AD FS выполнять определенные действия. Наряду с настройкой область необходимо отправить значение область в запросе AD FS для выполнения действия. Например, администратор настраивает область как openid
во время регистрации ресурсов, а приложение (клиент) должно отправить scope = openid
запрос проверки подлинности ad FS для выдачи маркера идентификатора. Ниже приведены сведения о доступных область в AD FS:
aza
— При использовании расширений протокола OAuth 2.0 для клиентов брокера и если параметр область содержит областьaza
, сервер выдает новый первичный маркер обновления. Он задает маркер вrefresh_token
поле ответа и задаетrefresh_token_expires_in field
время существования нового первичного маркера обновления, если он применяется.openid
— позволяет приложениюopenid
использовать протокол проверки подлинности подключения.logon_cert
— Позволяет приложению запрашивать сертификаты входа, которые можно использовать для интерактивного входа пользователей, прошедших проверку подлинности. Сервер AD FS пропускаетaccess_token
параметр из ответа и вместо этого предоставляет цепочку сертификатов CMS в кодировке Base64 или полный PKI-ответ CMC. Дополнительные сведения см. в разделе MS-OAPX: расширения протокола OAuth 2.0.user_impersonation
— запрашивает маркер доступа от имени от AD FS. Дополнительные сведения об использовании этой область см. в статье Создание многоуровневого приложения с помощью OAuth с AD FS 2016.allatclaims
— позволяет приложению запрашивать утверждения в маркере доступа, добавляемого в маркер идентификатора, а также.vpn_cert
— позволяет приложению запрашивать VPN-сертификаты, которые устанавливают VPN-подключения с помощью проверки подлинности EAP-TLS. Эта функция больше не поддерживается.email
— позволяет приложению запрашивать утверждение электронной почты для пользователя, вошедшего в систему.profile
— позволяет приложениям запрашивать утверждения, связанные с профилем для пользователя, вошедшего в систему.
Претензии
Маркеры безопасности (маркеры доступа и идентификатора), выданные AD FS, содержат утверждения или утверждения сведений об субъекте, прошедшем проверку подлинности. Приложения могут использовать утверждения для различных задач, включая следующие:
- проверка маркера безопасности;
- идентификация клиента каталога субъекта;
- Отображение сведений о пользователе
- определение авторизации субъекта.
Утверждения, имеющиеся в любом заданном маркере безопасности, зависят от типа маркера, типа учетных данных, используемых для проверки подлинности пользователя, и конфигурации приложения.
Высокоуровневый поток проверки подлинности AD FS
Ниже приведена схема высокого уровня потока.
AD FS получает запрос на проверку подлинности от клиента.
AD FS проверяет идентификатор клиента в запросе проверки подлинности с идентификатором клиента, полученным во время регистрации клиента и ресурса в AD FS. При использовании конфиденциального клиента AD FS также проверяет секрет клиента, предоставленный в запросе проверки подлинности. AD FS также проверяет URI перенаправления клиента.
AD FS определяет ресурс, к которому клиент хочет получить доступ через параметр ресурса, переданный в запросе проверки подлинности. Если вы используете клиентскую библиотеку MSAL, параметр ресурса не отправляется. Вместо этого URL-адрес ресурса отправляется как часть параметра область: область = [URL-адрес ресурса]/[область значения, например openid].
Если ресурс не передается с помощью ресурса или область параметров, AD FS использует ресурс
urn:microsoft:userinfo
по умолчанию, политики которого, такие как MFA, выдача или политика авторизации, не могут быть настроены.Далее AD FS проверяет, имеет ли клиент разрешения на доступ к ресурсу. AD FS также проверяет, соответствуют ли область, переданные в запросе проверки подлинности, область настроенным при регистрации ресурса. Если у клиента нет разрешений или правильные область не отправляются в запросе проверки подлинности, поток проверки подлинности завершается.
После проверки разрешений и область AD FS проходит проверку подлинности пользователя с помощью настроенного метода проверки подлинности.
Если требуется другой метод проверки подлинности в соответствии с политикой ресурсов или глобальной политикой проверки подлинности, AD FS активирует дополнительную проверку подлинности.
AD FS использует многофакторную проверку подлинности Microsoft Entra или стороннюю многофакторную проверку подлинности для выполнения проверки подлинности.
После проверки подлинности пользователя AD FS применяет правила утверждения. Правила утверждений определяют утверждения, отправленные ресурсу в рамках маркеров безопасности. AD FS также применяет полиции контроля доступа, которые подтверждают, что пользователь соответствует необходимым условиям для доступа к ресурсу.
Затем AD FS создает доступ и обновляет маркеры. AD FS также создает маркер идентификатора.
AD FS получает запрос проверки подлинности.
Если включить
scope = allatclaims
его в запрос проверки подлинности, он настраивает маркер идентификатора для включения утверждений в маркер доступа на основе определенных правил утверждений.После создания и настройки необходимых маркеров AD FS отвечает клиенту и включает маркеры. Ответ маркера идентификатора включается только в ответ, если запрос проверки подлинности включает
scope = openid
. Клиент всегда может получить маркер идентификатора после проверки подлинности с помощью конечной точки маркера.
Типы библиотек
Используйте два типа библиотек с AD FS:
Клиентские библиотеки: собственные клиенты и серверные приложения используют клиентские библиотеки для получения маркеров доступа для вызова ресурса, например веб-API. Библиотека проверки подлинности Майкрософт (MSAL) — это последняя и рекомендуемая клиентская библиотека при использовании AD FS 2019.
Серверные библиотеки ПО промежуточного слоя. Веб-приложения используют серверные библиотеки ПО промежуточного слоя для выполнения входа пользователей. Веб-API используют библиотеки ПО промежуточного слоя сервера для проверки маркеров, отправленных собственными клиентами или другими серверами. Open Web Interface for .NET (OWIN) — это рекомендуемая библиотека ПО промежуточного слоя.
Настройка маркера идентификатора (дополнительные утверждения в маркере идентификатора)
В некоторых сценариях возможно, что клиент веб-приложения нуждается в дополнительных утверждениях в маркере идентификатора, чтобы помочь в функциональных возможностях. Настройте дополнительные утверждения в маркере идентификатора с помощью одного из следующих вариантов:
Вариант 1. Используйте этот параметр, если у вас есть общедоступный клиент и веб-приложение не имеет ресурса, к которому он пытается получить доступ. Для этого варианта требуется:
response_mode
задано какform_post
- Идентификатор проверяющей стороны (идентификатор веб-API) совпадает с идентификатором клиента.
Вариант 2. Используйте этот параметр, если веб-приложение имеет ресурс, к которому он пытается получить доступ и должен передавать дополнительные утверждения через маркер идентификатора. Вы можете использовать как общедоступные, так и конфиденциальные клиенты. Для этого варианта требуется:
response_mode
задано какform_post
КБ 4019472 устанавливается на серверах AD FS
Область
allatclaims
назначается клиенту — паре RP. Вы можете назначить область с помощью .Grant-ADFSApplicationPermission
ИспользуйтеSet-AdfsApplicationPermission
, если оно уже было предоставлено один раз. Командлет PowerShell указан в следующем примере:Grant-AdfsApplicationPermission -ClientRoleIdentifier "https://my/privateclient" -ServerRoleIdentifier "https://rp/fedpassive" -ScopeNames "allatclaims","openid"
Чтобы лучше понять, как настроить веб-приложение в AD FS для получения настраиваемого маркера идентификатора, см . раздел "Пользовательские маркеры идентификаторов" в AD FS 2016 или более поздней версии.
Единый выход
Единый выход завершает все клиентские сеансы, использующие идентификатор сеанса. AD FS 2016 и более поздних версий поддерживает единый выход для OpenID Подключение/OAuth. Дополнительные сведения см. в статье "Единый выход" для OpenID Подключение с AD FS.
Конечные точки AD FS
Конечная точка AD FS | Description |
---|---|
/Авторизации | AD FS возвращает код авторизации, который можно использовать для получения маркера доступа. |
/Маркер | AD FS возвращает маркер доступа, который можно использовать для доступа к ресурсу, как и в веб-API. |
/Userinfo | AD FS возвращает утверждение субъекта. |
/devicecode | AD FS возвращает код устройства и пользовательский код. |
/logout | AD FS выходит из системы пользователя. |
/keys | Открытые ключи AD FS, используемые для подписывания ответов. |
/.well-known/openid-configuration | AD FS возвращает метаданные OAuth/OpenID Подключение. |