Групповая авторизация в корпоративных приложениях

Я использовал регистрацию приложений Azure для регистрации своего приложения. В Манифесте я добавил appRoles. Затем я использую приложения Azure Enterprise для добавления пользователей и групп в созданные мной роли приложения. Нужно ли мне обновлять "groupMembershipClaims": "SecurityGroup" в манифесте, потому что я добавляю группы в приложение Enterprise? Можно ли использовать заявки на основе ролей для групп в корпоративных приложениях?

1 ответ

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

Я предполагаю, что вы заинтересованы в утверждении ролей, поэтому вам не нужно обновлять манифест приложения, чтобы включить "groupMembershipClaims": "SecurityGroup", но вы лучший судья для требования вашего приложения.

Роли приложений

Вы можете определить роли приложения, отредактировав манифест приложения и добавив appRoles. Теперь вы можете назначать эти роли отдельным пользователям или даже группам Azure AD.

  • Назначение ролей отдельным пользователям

    Вы можете назначать роли отдельным пользователям, перейдя в Приложения предприятия и затем используя пользовательский интерфейс портала. Похоже, вы уже сделали это для своего приложения. Когда пользователь входит в ваше приложение, токен входящего доступа содержит утверждения о ролях для пользователя. например "roles": ["MyAppCustomRole1"]

  • Назначение ролей группам Azure AD

    Вы можете назначить роль приложения для Azure AD Group (если у вас есть Azure AD Premium). Это может быть удобно, особенно когда имеешь дело с большим количеством пользователей. Таким образом, вам не нужно назначать appRole отдельным пользователям, но вы можете выполнять массовое назначение в силу членства в группах.

    Если это то, что вы хотите сделать, вам не нужно обновлять манифест приложения, чтобы включить "groupMembershipClaims": "SecurityGroup"

Пример кода. Авторизация в веб-приложении с использованием ролей приложений Azure и утверждений о ролях

Документы Microsoft - Роли приложений

Групповые заявки

Вы можете разрешить вход групповых заявок в качестве маркера доступа для вашего приложения, отредактировав манифест приложения (это можно сделать непосредственно на портале Azure) и установив параметр "groupMembershipClaims" собственность на "All" или же "SecurityGroup" по мере необходимости.

После обновления манифеста приложения, как уже упоминалось, вы можете получить идентификаторы группы как часть утверждений. Вот быстрый пример для декодированного токена JWT. Обратите внимание, что это совершенно другое утверждение по сравнению с утверждением о ролях, объясненным ранее.

Пример кода - авторизация в веб-приложении с использованием групп Azure AD и утверждений групп

Группы v/s Роли

Следует понимать, что группы Azure AD и их членство полностью отделены от любого отдельного приложения.

Срок службы Azure AD Group также может быть другим, т. Е. Группа может продолжать существовать еще долго после удаления приложения или более не нужна.

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

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


Кроме того, чтобы убедиться, что размер токена не превышает ограничения размера заголовка HTTP, Azure AD ограничивает число идентификаторов объектов, включаемых в утверждение групп. Если пользователь является участником большего числа групп, чем предел превышения (150 для токенов SAML, 200 для токенов JWT), то Azure AD не отправляет утверждение группы в токене. Вместо этого он включает избыточное требование в токене, которое указывает приложению на запрос API Graph для получения членства в группе пользователя.

Другие связанные SO сообщения:

Другие вопросы по тегам