Настройка утверждений групп для приложений с помощью Azure Active Directory

Azure Active Directory может предоставить сведения о членстве в группах пользователей в маркерах для использования в приложениях. Поддерживаются два основных шаблона:

  • Группы, определяемые по атрибуту идентификатора объекта Azure Active Directory (OID)
  • Группы, определяемые атрибутами sAMAccountName или GroupSID для групп и пользователей, синхронизированных с Active Directory (AD)

Важно!

Существует ряд предостережений, которые следует учитывать при работе с этой функцией:

  • Поддержка использования атрибутов sAMAccountName и идентификатора безопасности (SID), синхронизированных из локальной среды, предназначена для перемещения существующих приложений из AD FS и других поставщиков удостоверений. Группы, управляемые в Azure AD, не содержат атрибуты, необходимые для создания этих утверждений.
  • В крупных организациях число групп, членом которых является пользователь, может превысить ограничение, которое Azure Active Directory добавит в токен. 150 групп для токена SAML и 200 для JWT. Это может привести к непредсказуемым результатам. Если пользователи имеют большое количество членств в группах, рекомендуется использовать параметр, ограничивающий группы, созданные в утверждениях, соответствующими группами для приложения.
  • Групповые утверждения имеют ограничение в 5 групп, если маркер выдается через неявный поток. Маркеры, запрошенные через неявный поток, будут иметь только утверждение "hasgroups":true, если пользователь состоит более чем в 5 группах.
  • При разработке новых приложений или в случаях, когда приложение может быть настроено для этого, а также когда поддержка вложенных групп не требуется, рекомендуется, чтобы авторизация в приложении основывалась на ролях приложений, а не на группах. Это ограничивает объем информации, которая должна входить в токен, и поэтому такой способ более безопасен, а также он позволяет отделять назначение пользователей от конфигурации приложения.

Утверждения групп для приложений, выполняющих миграцию с AD FS и других поставщиков удостоверений

Многие приложения, настроенные для проверки подлинности с помощью AD FS, используют сведения о членстве в группах в форме атрибутов группы Windows AD. Эти атрибуты представляют собой значение sAMAccountName группы, которое может быть дополнено именем домена или идентификатором безопасности группы Windows (GroupSID). Если приложение объединено с AD FS, то AD FS использует функцию TokenGroups для получения членства в группах для пользователя.

Приложение, перемещенное из AD FS, должно иметь утверждения в том же формате. Утверждения групп и роли с доменом sAMAccountName или GroupSID, который синхронизирован с использованием Active Directory, а не Azure Active Directory objectID группы, могут выдаваться из Azure Active Directory.

Поддерживаемые форматы утверждений групп:

  • ObjectID группы Azure Active Directory (доступно для всех групп)
  • sAMAccountName (доступно для групп, синхронизированных из Active Directory)
  • NetbiosDomain\sAMAccountName (доступно для групп, синхронизированных из Active Directory)
  • DNSDomainName\sAMAccountName (доступно для групп, синхронизированных из Active Directory)
  • Идентификатор безопасности локальной группы (доступен для групп, синхронизированных из Active Directory)

Примечание

Атрибуты sAMAccountName и идентификатора безопасности локальной группы доступны только для объектов группы, синхронизированных из Active Directory. Они недоступны в группах, созданных в Azure Active Directory или Office365. Приложения, настроенные в Azure Active Directory на получение синхронизированных атрибутов локальной группы, получают их только для синхронизированных групп.

Параметры для использования сведений о группе в приложениях

Приложения могут вызывать конечную точку групп MS Graph для получения сведений о группе для пользователя, прошедшего проверку подлинности. Этот вызов гарантирует, что все группы, членом которых является пользователь, будут доступны даже при наличии большого количества групп. В этом случае перечисление групп не зависит от ограничений размера маркера.

Однако если существующее приложение планирует использовать сведения о группе через утверждения, Azure Active Directory можно настроить с помощью ряда различных форматов утверждений. Следуйте приведенным ниже рекомендациям.

  • При использовании членства в группах в целях авторизации в приложении предпочтительнее использовать ObjectID группы. ObjectID группы доступен для всех групп и является неизменяемым и уникальным в Azure Active Directory.
  • Если для авторизации используется локальная группа sAMAccountName, используйте полные имена доменов, чтобы снизить вероятность конфликта имен. sAMAccountName может быть уникальным в пределах домена Active Directory, но если существуют несколько доменов Active Directory, которые синхронизируются с клиентом Azure Active Directory, есть вероятность того, что несколько групп будут иметь одно и то же имя.
  • Рассмотрите возможность использования ролей приложения для обеспечения уровня косвенного обращения между членством в группе и приложением. В этом случае приложение выполняет внутренние решения по авторизации на основе утверждений ролей в маркере.
  • Если приложение настроено на получение атрибутов группы, которые синхронизируются из Active Directory, и группа не содержит этих атрибутов, такая группа не будет добавлена в утверждения.
  • Утверждения групп в маркерах включают вложенные группы, за исключением случаев использования параметра для ограничения утверждений групп для групп, назначенных приложению. Если пользователь является членом GroupB, а GroupB является членом GroupA, то утверждения групп для пользователя будут содержать как GroupA, так и GroupB. Если пользователи организации имеют большое количество членств в группах, число групп, перечисленных в маркере, может увеличить размер маркера. Azure Active Directory ограничивает количество выдаваемых в токене групп до 150 для утверждений SAML и 200 для JWT. Если пользователь является членом большего числа групп, такие группы пропускаются, а вместо этого включается ссылка на конечную точку Graph для получения сведений о группе.

Необходимые условия для использования атрибутов групп, синхронизированных из Active Directory

При использовании формата ObjectId утверждения членства в группе можно выдавать в токенах для любой группы. Чтобы использовать утверждения групп в форматах, отличных от ObjectId, необходимо синхронизировать группы из Active Directory с помощью Azure AD Connect.

Настройка Azure Active Directory для создания имен групп для групп Active Directory состоит из двух этапов.

  1. Синхронизация имен групп из Active Directory. Прежде чем Azure Active Directory сможет выдать имена групп или идентификатор безопасности локальной группы в утверждениях о группе или роли, необходимо синхронизировать требуемые атрибуты из Active Directory. Необходимо запустить Azure AD Connect версии 1.2.70 или более поздней. Версии Azure AD Connect до 1.2.70 будут синхронизировать объекты группы из Active Directory, но не будут содержать обязательные атрибуты имени группы. Выполните обновление до текущей версии.

  2. Настройка регистрации приложения в Azure Active Directory для включения утверждений групп в токены. Утверждения групп можно настроить в разделе "Корпоративные приложения" на портале или с помощью манифеста приложения в разделе "Регистрация приложений". Сведения о настройке утверждений групп в манифесте приложения см. в разделе "Настройка регистрации приложения Azure Active Directory для атрибутов группы" ниже.

Добавление в токены утверждений групп для приложений SAML с помощью настройки единого входа

Чтобы настроить утверждения групп для приложения SAML из коллекции или не из коллекции, откройте Enterprise Applications (Корпоративные приложения), щелкните на приложение в списке, выберите Single Sign On configuration (Настройка единого входа), а затем User Attributes & Claims (Атрибуты и утверждения пользователя).

Щелкните Add a group claim (Добавить утверждение о группе)

Снимок экрана: страница "Атрибуты и утверждения пользователя" с выделенным значком "Добавить утверждение группы".

Использование переключателей для выбора групп, которые должны быть добавлены в маркер

Снимок экрана: окно "Утверждения групп" с выбранным пунктом "Группы безопасности".

Выбор Описание
Все группы Выдает группы безопасности, а также списки рассылки и роли
Группы безопасности Выдает группы безопасности, членом которых является пользователь в утверждениях групп
Роли каталога Если пользователю назначаются роли каталога, они выдаются как утверждение "wids" (утверждения групп выдаваться не будут)
Группы, назначенные приложению Выдает только те группы, которые явным образом назначены приложению, и пользователь является их членом

Например, чтобы выдать все группы безопасности, членом которых является пользователь, выберите "Группы безопасности"

Снимок экрана: окно "Утверждения групп" с выбранным пунктом "Группы безопасности" и открытым раскрывающимся меню "Атрибут источника".

Чтобы выдать группы с использованием атрибутов Active Directory, синхронизированных из Active Directory, вместо objectID Azure AD, выберите требуемый формат в раскрывающемся меню. В утверждениях будут включены только группы, синхронизированные из Active Directory.

Снимок экрана: открытое раскрывающееся меню "Исходный атрибут".

Чтобы выдать приложению только группы, назначенные для приложения, выберите пункт Группы, назначенные приложению.

Снимок экрана: окно "Утверждения групп" с выбранным пунктом "Группы, назначенные приложению".

Группы, назначенные приложению, будут включаться в маркер. Другие группы, членом которых является пользователь, будут пропущены. При использовании этого параметра вложенные группы не включаются, и пользователь должен быть прямым членом группы, назначенной приложению.

Чтобы изменить группы, назначенные приложению, выберите приложение из списка Enterprise Applications (Корпоративные приложения), а затем щелкните Users and Groups (Пользователи и группы) в левом меню навигации приложения.

Сведения об управлении назначением групп для приложений см. в документе Назначение корпоративному приложению пользователя или группы.

Расширенные параметры

Способ выдачи утверждений групп можно изменить с помощью настройки расширенных параметров

Настройка имени утверждения групп: если этот параметр выбран, то для утверждений групп можно указать другой тип утверждения. Введите тип утверждения в поле с именем и необязательное пространство имен для утверждения в поле с пространством имени.

Снимок экрана: раздел "Расширенные параметры" с выбранным параметром "Настроить имя утверждения группы" и введенными значениями в полях "Имя" и "Пространство имен".

Для некоторых приложений требуется, чтобы сведения о членстве в группе отображались в утверждении "роль". При необходимости можно создать группы пользователей как роли, установив флажок "Выводить группы в виде утверждений ролей".

Снимок экрана: раздел "Дополнительные параметры" с выбранными параметрами "Настроить имя утверждения группы" и "Выводить группы в виде утверждений ролей".

Примечание

Если используется параметр для вывода данных группы в качестве ролей, в утверждении роли будут отображаться только группы. Все роли приложения, назначенные для пользователя, не будут отображаться в утверждении роли.

Изменение конфигурации утверждений группы

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

Пользовательский интерфейс утверждений

Настройка регистрации приложения Azure AD для атрибутов группы

Утверждения групп также можно настроить в разделе Необязательные утверждения манифеста приложения.

  1. На портале откройте Azure Active Directory -> "Регистрация приложения" -> "Выбрать приложение" -> "Манифест".

  2. Включите утверждения о членстве в группах путем изменения groupMembershipClaim

Допустимые значения:

Выбор Описание
"All" Выдает группы безопасности, а также списки рассылки и роли
"SecurityGroup" Выдает группы безопасности, членом которых является пользователь в утверждениях групп
"DirectoryRole" Если пользователю назначаются роли каталога, они выдаются как утверждение "wids" (утверждения групп выдаваться не будут)
"ApplicationGroup" Выдает только те группы, которые явным образом назначены приложению, и пользователь является их членом
"None" Группы не возвращаются (нет чувствительности к регистру, поэтому "None" тоже работает, и установить его можно непосредственно в манифесте приложения)

Пример:

"groupMembershipClaims": "SecurityGroup"

По умолчанию группы ObjectID будут выдаваться в значении утверждения группы. Чтобы изменить значение утверждения в соответствии с атрибутами локальной группы или изменить тип утверждения на роль, используйте конфигурацию OptionalClaims следующим образом.

  1. Задайте необязательные утверждения для конфигурации имени группы.

    Если вы хотите, чтобы группы в токене содержали атрибуты локальной группы AD, в разделе "Необязательные утверждения" укажите, к какому типу маркера следует применить необязательное утверждение. В списке можно указать несколько типов маркеров:

    • idToken для маркера идентификатора OIDC;
    • accessToken для маркера доступа OAuth/OIDC;
    • Saml2Token для маркеров SAML.

    Примечание

    Тип Saml2Token применяется к маркерам формата SAML1.1 и SAML2.0.

    Для каждого соответствующего типа токена измените утверждение групп, чтобы в манифесте использовался раздел OptionalClaims. Схема OptionalClaims выглядит следующим образом:

    {
    "name": "groups",
    "source": null,
    "essential": false,
    "additionalProperties": []
    }
    
    Схема необязательного утверждения Значение
    name: Должно быть "groups"
    source: Не используется. Пропустите или укажите "null"
    essential: Не используется. Пропустите или укажите "false"
    additionalProperties: Список дополнительных свойств. Допустимые значения: "sam_account_name", "dns_domain_and_sam_account_name", "netbios_domain_and_sam_account_name", "emit_as_roles".

    В additionalProperties требуется только один из них: "sam_account_name", "dns_domain_and_sam_account_name", "netbios_domain_and_sam_account_name". Если указано более одного, используется первый, а остальные игнорируются.

    Некоторым приложениям требуются сведения о группе пользователя в утверждении роли. Чтобы изменить тип утверждения с утверждения группы на утверждение роли, добавьте "emit_as_roles" к дополнительным свойствам. Значения группы будут выдаваться в утверждении роли.

    Примечание

    Если используется "emit_as_roles", все роли приложения, настроенные для назначения пользователя, не будут отображаться в утверждении роли.

Примеры

Выдача групп в качестве имен групп в маркерах доступа OAuth в формате dnsDomainName\SAMAccountName

"optionalClaims": {
    "accessToken": [{
        "name": "groups",
        "additionalProperties": ["dns_domain_and_sam_account_name"]
    }]
}

Чтобы выдать имена групп в формате netbiosDomain\samAccountName в качестве утверждения роли в маркерах SAML и маркерах идентификатора OIDC:

"optionalClaims": {
    "saml2Token": [{
        "name": "groups",
        "additionalProperties": ["netbios_name_and_sam_account_name", "emit_as_roles"]
    }],

    "idToken": [{
        "name": "groups",
        "additionalProperties": ["netbios_name_and_sam_account_name", "emit_as_roles"]
    }]
}

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