토큰에서 그룹 클레임 및 앱 역할 구성
이 문서에서는 앱 역할 정의를 사용하여 앱을 구성하고 앱 역할에 보안 그룹을 할당하여 최소한의 권한으로 애플리케이션 보안을 강화하면서 유연성과 제어를 향상시킬 수 있습니다.
Microsoft Entra ID는 사용자의 할당된 보안 그룹, Microsoft Entra 디렉터리 역할 및 배포 그룹을 토큰의 클레임으로 보낼 수 있도록 지원합니다. 이 방법을 사용하여 앱에서 권한 부여를 추진할 수 있습니다. 그러나 Microsoft Entra ID는 토큰 크기별로 토큰의 그룹 지원을 제한합니다. 사용자가 너무 많은 그룹의 멤버인 경우 토큰에 그룹이 없습니다.
이 문서에서는 Microsoft Entra 그룹 지원을 사용하여 토큰에서 사용자 정보를 가져오는 다른 방법을 알아봅니다. 대신 앱 역할 정의를 사용하여 앱을 구성하고 앱 역할에 그룹을 할당합니다. 이
권한 부여를 위해 애플리케이션 내에서 사용할 수 있는 토큰에서 그룹 클레임
- Microsoft Entra 개체 식별자(OID) 특성으로 식별되는 그룹입니다.
- Active Directory 동기화된 그룹 및 사용자의
sAMAccountName
또는GroupSID
특성으로 식별되는 그룹입니다.
그룹 멤버 자격은 권한 부여 결정을 내릴 수 있습니다. 예를 들어 다음 예제에서는 토큰의 일부 클레임을 보여줍니다. ID 또는 액세스 토큰에 그룹 클레임 및 역할을 추가할 수 있습니다.
"aud": "00001111-aaaa-2222-bbbb-3333cccc4444",
"iss": "https://login.microsoftonline.com/833ced3d-cb2e-41de-92f1-29e2af035ddc/v2.0",
"iat": 1669657224, "nbf": 1669657224, "exp": 1669661124,
"groups": [
"0760b6cf-170e-4a14-91b3-4b78e0739963",
"3b2b0c93-acd8-4208-8eba-7a48db1cd4c0"
],
"oid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"sub": "3OBtLXUC2ZrN_ADLNjW9X4o0lcd61py7lgHw3Skh77s",
"tid": "bbbbcccc-1111-dddd-2222-eeee3333ffff",
"ver": "2.0",
"wids": [
"cf1c38e5-3621-4004-a7cb-879624dced7c",
"b79fbf4d-3ef9-4689-8143-76b194e85509"
]
groups
클레임 배열은 이 사용자가 멤버인 그룹의 ID로 구성됩니다.
wids
배열은 이 사용자에게 할당된 Microsoft Entra 역할의 ID로 구성됩니다. 여기서 cf1c38e5-3621-4004-a7cb-879624dced7c
이 사용자의 할당된 역할에는 3b2b0c93-acd8-4208-8eba-7a48db1cd4c0
나타내는 대로 애플리케이션 개발자 및 표준 멤버가 포함됨을 보여 줍니다.
앱은 이러한 클레임 및 해당 값의 존재 여부 또는 부재에 따라 권한 부여 결정을 내릴 수 있습니다. Microsoft Entra 기본 제공 역할 에서 wids
클레임에 대한 값 목록을 참조하세요.
토큰에 groups
및 wids
클레임을 추가하려면, 다음 예제에 나와 있는 것처럼 앱 등록 | 토큰 구성 | 선택적 클레임 | 그룹 클레임 화면에서 모든 그룹을 선택하십시오.
그룹 초과분
위의 예제와 같이 토큰의 모든 그룹을 요청하는 경우 토큰에 groups
클레임이 있는 토큰을 사용할 수 없습니다. 토큰 및 groups
클레임에 대한 크기 제한이 있으므로 너무 커지지 않습니다. 사용자가 너무 많은 그룹의 구성원인 경우 앱은 Microsoft Graph에서 사용자의 그룹 멤버 자격을 가져와야 합니다.
groups
클레임의 그룹에 대한 제한은 다음과 같습니다.
- JWT(JSON 웹 토큰)용 그룹 200개
- SAML(Security Assertion Markup Language) 토큰에 대한 150개 그룹입니다.
- 암시적 흐름을 사용할 때 6개의 그룹이 있습니다. 예를 들어, 하이브리드 흐름의 일부인 암시적 흐름을 통해 ID 토큰을 가져오는 ASP.NET 코어를 사용하는 경우를 말합니다.
- 단일 페이지 웹앱에는 암시적 흐름이 더 이상 권장되지 않습니다.
- 웹 앱에서 암시적 흐름은 OAuth2 하이브리드 흐름에서 액세스 토큰이 아닌 ID 토큰에만 사용할 수 있습니다.
OpenID Connect 또는 OAuth2를 사용하는 경우 토큰에 최대 200개의 그룹을 가질 수 있습니다. SAML을 사용하는 경우 SAML 토큰이 OAuth2 및 OpenID Connect 토큰보다 크므로 150개의 그룹만 가질 수 있습니다. 암시적 흐름을 사용하는 경우 해당 응답이 URL에 표시되므로 제한은 6입니다. 이러한 모든 경우에서 groups
클레임이 있는 대신 사용자가 토큰에 맞지 않는 너무 많은 그룹의 구성원임을 나타내는 표시(그룹 초과라고 함)가 표시됩니다.
groups
클레임은 src1
에 연결되어야 합니다. 가정하자면, _claim_sources
클레임을 찾고 나서 src1
멤버를 찾게 됩니다. 여기에서 그룹 멤버 자격을 가져오는 데 사용할 Graph 쿼리를 찾을 수 있습니다. 그러나 예제 그래프 쿼리에 표시되는 내용에 문제가 있습니다. Microsoft가 더 이상 사용하지 않는 Azure AD Graph로 이동하므로 사용하지 마세요.
암시적 흐름 초과 표시는 groups
클레임 대신 hasgroups
클레임으로 수행됩니다.
그룹 멤버 자격을 사용하여 적절한 권한 부여를 보장하려면 앱에서 groups
클레임을 확인하도록 합니다. 있는 경우 해당 클레임을 사용하여 사용자의 그룹 멤버 자격을 확인합니다.
groups
클레임이 없는 경우, 배열의 groups
멤버가 있는 hasgroups
클레임이나 _claim_names
클레임이 있는지 확인합니다. 이러한 클레임 중 하나가 있는 경우 사용자는 토큰에 대해 너무 많은 그룹의 구성원입니다. 이 경우 앱은 Microsoft Graph를 사용하여 사용자의 그룹 멤버 자격을 결정해야 합니다.
사용자의 멤버 자격(직접 및 전이적) 나열하여 사용자가 구성원인 직접 및 전이적 그룹을 모두 찾습니다.
애플리케이션에 실시간 그룹 멤버 자격 정보가 필요한 경우 Microsoft Graph를 사용하여 그룹 멤버 자격을 확인합니다. 받은 토큰의 정보는 토큰을 획득할 때만 최신 상태임을 기억하세요.
앱 등록 | 토큰 구성 | 선택적 클레임 | 그룹 클레임 편집 화면의 다음 예제를 참조하세요. 그룹 초과 클레임이 발생하지 않도록 하는 한 가지 방법은 모든 그룹이
애플리케이션할당된
- 그룹이 으로 엔터프라이즈 앱에 할당됩니다.
- 사용자가 그룹의 직접 구성원입니다.
이 문서의 게시를 기준으로 애플리케이션 옵션에 할당된
그룹 및 앱 역할
그룹 초과 문제를 방지하는 또 다른 방법은 앱이 사용자 및 그룹을 멤버 유형으로 허용하는 앱 역할을 정의하는 것입니다. 앱 역할 만들기
앱 등록에서 앱 역할을 만듦으로써 IT 전문가는 사용자 및 그룹을 그 역할에할당할 수 있습니다. 앱은 로그인한 사용자의 할당된 모든 역할을 포함하여, 아래의 토큰 예제와 같이 토큰(앱 ID 토큰, API에 대한 액세스 토큰)에서 roles
클레임을 받습니다.
"aud": "11112222-bbbb-3333-cccc-4444dddd5555",
"iss": "https://login.microsoftonline.com/833ced3d-cb2e-41de-92f1-29e2af035ddc/v2.0",
"iat": 1670826509, "nbf": 1670826509, "exp": 1670830409,
"name": "Kyle Marsh",
"oid": "bbbbbbbb-1111-2222-3333-cccccccccccc",
"preferred_username": "kylemar@idfordevs.dev",
"roles": [
"Approver",
"Reviewer"
],
"sub": "dx-4lf-0loB3c3uVrULnZ2VTLuRRWYff0q7-QlIfYU4",
"tid": "ccccdddd-2222-eeee-3333-ffff4444aaaa",
애플리케이션에서 다음 조건을 처리해야 합니다.
-
roles
클레임이 없음 - 사용자에게 역할 할당이 없습니다.
- 사용자가 둘 이상의 역할을 할당받은 경우
roles
클레임에 여러 개의 값이 있습니다.
사용자 및 그룹을 멤버로 허용하는 앱 역할을 만들 때 항상 관리자 권한 부여 역할 없이 기준 사용자 역할을 정의합니다. 엔터프라이즈 앱 구성에 할당이 필요한 경우 애플리케이션에 직접 할당된 사용자 또는 앱에 할당된 그룹의 멤버 자격만 앱을 사용할 수 있습니다.
앱에 사용자 및 그룹을 구성원으로 허용하는 앱 역할을 정의한 경우 사용자 또는 그룹이 앱에 할당될 때 정의된 앱 역할 중 하나가 앱에 대한 사용자 또는 그룹의 할당에 속해야 합니다. 앱에서 상승된 역할(예: admin
)만 정의된 경우, 모든 사용자와 그룹에 관리자 역할이 할당됩니다. 기본 역할(예: user
)을 정의할 때, 앱에 할당된 사용자 및 그룹은 기본 사용자 역할을 부여받을 수 있습니다.
그룹 초과 청구를 방지하는 것 외에도 역할을 사용하는 또 다른 장점은 그룹 ID 또는 이름과 애플리케이션 내의 의미 간에 매핑할 필요가 없다는 것입니다. 예를 들어, 코드는 groups
클레임의 그룹을 반복하면서 관리자 기능이 허용될 그룹 ID를 결정하는 대신, 관리자 역할 클레임을 직접 찾을 수 있습니다.
코드에서 역할 확인 및 사용
앱에 대한 앱 역할을 정의할 때 해당 역할에 대한 권한 부여 논리를 구현하는 것은 사용자의 책임입니다. 앱에서 권한 부여 논리를 구현하는 방법을 알아보려면 애플리케이션 역할 기반 액세스 제어 구현을 참조하세요.
다음 단계
- 토큰 사용자 지정 Microsoft Entra 토큰에서 받을 수 있는 정보를 설명합니다. 최소 권한으로 애플리케이션 제로 트러스트 보안을 강화하면서 유연성과 제어를 향상시키기 위해 토큰을 사용자 지정하는 방법을 설명합니다.
- Microsoft Entra ID를 사용하여 애플리케이션에 대한 그룹 클레임 구성 Microsoft Entra ID가 애플리케이션 내에서 사용할 토큰에 사용자의 그룹 멤버 자격 정보를 제공하는 방법을 보여 줍니다.
- 애플리케이션 속성에 대한 보안 모범 사례는 리디렉션 URI, 액세스 토큰(암시적 흐름에 사용), 인증서 및 비밀, 애플리케이션 ID URI 및 애플리케이션 소유권을 설명합니다.
- Microsoft ID 플랫폼 범위, 권한 & 동의
보다 안전하고 신뢰할 수 있는 애플리케이션을 빌드하는 데 도움이 되는 액세스 및 권한 부여의 기본 개념을 설명합니다. - 보안 애플리케이션을 만들기 위해 애플리케이션 개발 수명 주기에서 제로 트러스트 ID 및 액세스 관리 개발 모범 사례을 적용합니다.