Azure - 토큰에 사용자 지정 클레임 추가
📮 문의하기 🇧🇷 🇺🇸 🇫🇷
토큰에 사용자 지정 클레임 추가
토큰에 사용자 정의 클레임을 추가할 수 있습니다. 여기에서 어떻게 할 수 있는지 보여드리겠습니다.
첫 번째 방법
토큰 구성에서 필요한 모든 선택적 클레임을 추가합니다.
Azure의 애플리케이션 등록 매니페스트에서 acceptMappedClaims를 true로 설정합니다.
원래 주장
{
"aud": "xxxxxx-xxxxxx",
"iss": "https://login.microsoftonline.com/xxxxxx-xxxxxx/v2.0",
"iat": 1651237210,
"nbf": 1651237210,
"exp": 1651241110,
"name": "Carlos Trump",
"nonce": "xxxxxx-xxxxxx",
"oid": "xxxxxx-xxxxxx",
"preferred_username": "[email protected]",
"rh": "0.AXYAqOdw6jRZRkSWfP72hzb6eT8SDlNWZqdPqMc67VBLYYiZAB4.",
"sub": "zuB5I9MCoF1qr-crecx909wvV5P9YActkklSSJD8AV4",
"tid": "xxxxxx-xxxxxx",
"uti": "fzv0cbl8Skai4_NzlvlpAA",
"ver": "2.0"
}
몇 가지 기본 속성으로
{
"aud": "xxxxxx-xxxxxx",
"iss": "https://login.microsoftonline.com/xxxxxx-xxxxxx/v2.0",
"iat": 1651258028,
"nbf": 1651258028,
"exp": 1651261928,
"aio": "ATQAy/8TAAAAk4vHaYNEYYdk9mGabVnZU3k7irtTt8kN9nSCwi33t2WnUZQ+wfVqhmfagvrEDaFl",
"name": "Carlos Trump",
"nonce": "xxxxxx-xxxxxx",
"oid": "xxxxxx-xxxxxx",
"preferred_username": "[email protected]",
"rh": "0.AXYAqOdw6jRZRkSWfP72hzb6eQ2WycEzZuJOvIt24Do6O26ZAB4.",
"sub": "HZpJ82-w-xbNiIIZO4rbPyMLwespkL6vImL3tjtjWfQ",
"tid": "xxxxxx-xxxxxx",
"uti": "ei9kLnvfnUW37Vn--2SUAA",
"ver": "2.0",
"country": "CA"
}
국가는 여기에 표시되는 세입자 정보입니다.
확장 속성 사용
{
"aud": "xxxxxx-xxxxxx",
"iss": "https://login.microsoftonline.com/xxxxxx-xxxxxx/v2.0",
"iat": 1651264242,
"nbf": 1651264242,
"exp": 1651268142,
"aio": "ATQAy/8TAAAAewvv7oKplIyMzAwyQB1cJQtJ5AxLPwkQqAtvthJuBannRHsbRqiqXPpIWalURrbA",
"extn.testString": [
"my string value"
],
"name": "Carlos Trump",
"nonce": "xxxxxx-xxxxxx",
"oid": "xxxxxx-xxxxxx",
"preferred_username": "[email protected]",
"rh": "0.AXYAqOdw6jRZRkSWfP72hzb6eQ2WycEzZuJOvIt24Do6O26ZAB4.",
"sub": "HZpJ82-w-xbNiIIZO4rbPyMLwespkL6vImL3tjtjWfQ",
"tid": "xxxxxx-xxxxxx",
"uti": "HX0mTfONKEKwFXRbx76SAA",
"ver": "2.0"
}
extn.testString은 현재 검색된 모든 정보에 존재하는 새로운 사용자 정의 속성입니다.
두 번째 방법
AzureAD 및 AzureADPreview Module은 PowerShell v7.x에서 작동하지 않으므로 powershell 5를 사용해야 합니다.
powershell 버전 확인
$PSVersionTable
5.1 버전을 실행하지 않는 경우 이 명령을 사용해야 합니다.
PowerShell -version 5.1
그런 다음 올바른 버전을 사용하고 있는지 확인합니다.
$PSVersionTable
IMPORTANT
You have to use AzureADPreview because AzureAD doesn't have several commands.
Install-Module AzureADPreview
Import-Module AzureADPreview
Connect-AzureAD -tenantId {TENANT_ID}
Get-AzureADPolicy
New-AzureADPolicy -Definition @('{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"true", "ClaimsSchema": [{"Source":"user","ID":"employeeid","SamlClaimType":"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/employeeid","JwtClaimType":"employeeid"},{"Source":"company","ID":"tenantcountry","SamlClaimType":"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country","JwtClaimType":"country"}]}}') -DisplayName "ExtraClaimsExample" -Type "ClaimsMappingPolicy"
# for extension attributes
New-AzureADPolicy -Definition @('{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"true", "ClaimsSchema": [{"Source":"user","ExtensionID":"extension_{CLIENT_ID}_testString","JwtClaimType":"extTestString"}]}}') -DisplayName "ExtraClaimsExample" -Type "ClaimsMappingPolicy"
Remove-AzureADPolicy -Id {POLICY_ID}
IMPORTANT
- For extension attributes, you have to use ExtensionID instead of ID
- ExtensionID values are case sensitives.
서비스 주체 ObjectID 가져오기
Get-AzureADServicePrincipal -SearchString {APP_REGISTRATION_NAME}
서비스 주체에 정책 적용
Add-AzureADServicePrincipalPolicy -Id {SERVICE_PRINCIPAL_OBJECT_ID} -RefObjectId {POLICY_ID}
새 애플리케이션 키 추가
New-AzureADApplicationKeyCredential -ObjectId {APPLICATION_OBJECT_ID} -CustomKeyIdentifier "Test" -StartDate "4/29/2022" -Type "Symmetric" -Usage "Sign" -Value "123"
{
"aud": "xxxxxx-xxxxxx",
"iss": "https://login.microsoftonline.com/xxxxxx-xxxxxx/v2.0",
"iat": 1651237210,
"nbf": 1651237210,
"exp": 1651241110,
"name": "Carlos Trump",
"nonce": "xxxxxx-xxxxxx",
"oid": "xxxxxx-xxxxxx",
"preferred_username": "[email protected]",
"rh": "0.AXYAqOdw6jRZRkSWfP72hzb6eT8SDlNWZqdPqMc67VBLYYiZAB4.",
"sub": "zuB5I9MCoF1qr-crecx909wvV5P9YActkklSSJD8AV4",
"tid": "xxxxxx-xxxxxx",
"uti": "fzv0cbl8Skai4_NzlvlpAA",
"ver": "2.0"
}
{
"aud": "xxxxxx-xxxxxx",
"iss": "https://login.microsoftonline.com/xxxxxx-xxxxxx/v2.0",
"iat": 1651258028,
"nbf": 1651258028,
"exp": 1651261928,
"aio": "ATQAy/8TAAAAk4vHaYNEYYdk9mGabVnZU3k7irtTt8kN9nSCwi33t2WnUZQ+wfVqhmfagvrEDaFl",
"name": "Carlos Trump",
"nonce": "xxxxxx-xxxxxx",
"oid": "xxxxxx-xxxxxx",
"preferred_username": "[email protected]",
"rh": "0.AXYAqOdw6jRZRkSWfP72hzb6eQ2WycEzZuJOvIt24Do6O26ZAB4.",
"sub": "HZpJ82-w-xbNiIIZO4rbPyMLwespkL6vImL3tjtjWfQ",
"tid": "xxxxxx-xxxxxx",
"uti": "ei9kLnvfnUW37Vn--2SUAA",
"ver": "2.0",
"country": "CA"
}
{
"aud": "xxxxxx-xxxxxx",
"iss": "https://login.microsoftonline.com/xxxxxx-xxxxxx/v2.0",
"iat": 1651264242,
"nbf": 1651264242,
"exp": 1651268142,
"aio": "ATQAy/8TAAAAewvv7oKplIyMzAwyQB1cJQtJ5AxLPwkQqAtvthJuBannRHsbRqiqXPpIWalURrbA",
"extn.testString": [
"my string value"
],
"name": "Carlos Trump",
"nonce": "xxxxxx-xxxxxx",
"oid": "xxxxxx-xxxxxx",
"preferred_username": "[email protected]",
"rh": "0.AXYAqOdw6jRZRkSWfP72hzb6eQ2WycEzZuJOvIt24Do6O26ZAB4.",
"sub": "HZpJ82-w-xbNiIIZO4rbPyMLwespkL6vImL3tjtjWfQ",
"tid": "xxxxxx-xxxxxx",
"uti": "HX0mTfONKEKwFXRbx76SAA",
"ver": "2.0"
}
$PSVersionTable
PowerShell -version 5.1
$PSVersionTable
IMPORTANT
You have to use AzureADPreview because AzureAD doesn't have several commands.
Install-Module AzureADPreview
Import-Module AzureADPreview
Connect-AzureAD -tenantId {TENANT_ID}
Get-AzureADPolicy
New-AzureADPolicy -Definition @('{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"true", "ClaimsSchema": [{"Source":"user","ID":"employeeid","SamlClaimType":"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/employeeid","JwtClaimType":"employeeid"},{"Source":"company","ID":"tenantcountry","SamlClaimType":"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country","JwtClaimType":"country"}]}}') -DisplayName "ExtraClaimsExample" -Type "ClaimsMappingPolicy"
# for extension attributes
New-AzureADPolicy -Definition @('{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"true", "ClaimsSchema": [{"Source":"user","ExtensionID":"extension_{CLIENT_ID}_testString","JwtClaimType":"extTestString"}]}}') -DisplayName "ExtraClaimsExample" -Type "ClaimsMappingPolicy"
Remove-AzureADPolicy -Id {POLICY_ID}
IMPORTANT
- For extension attributes, you have to use ExtensionID instead of ID
- ExtensionID values are case sensitives.
Get-AzureADServicePrincipal -SearchString {APP_REGISTRATION_NAME}
Add-AzureADServicePrincipalPolicy -Id {SERVICE_PRINCIPAL_OBJECT_ID} -RefObjectId {POLICY_ID}
New-AzureADApplicationKeyCredential -ObjectId {APPLICATION_OBJECT_ID} -CustomKeyIdentifier "Test" -StartDate "4/29/2022" -Type "Symmetric" -Usage "Sign" -Value "123"
APPLICATION_OBJECT_ID => 이 값은 앱 등록 개요 페이지에서 사용할 수 있습니다.
원천
오타 또는 제안?
이 블로그 게시물에서 오타, 개선할 수 있는 문장 또는 업데이트해야 할 사항을 발견한 경우 git 저장소를 통해 액세스하고 풀 요청을 할 수 있습니다. github에 익숙하다면 댓글을 게시하는 대신 https://github.com/campelo/documentation로 직접 이동하여 변경 사항이 포함된 새로운 풀 리퀘스트를 여세요.
Reference
이 문제에 관하여(Azure - 토큰에 사용자 지정 클레임 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/campelo/azure-adding-custom-claims-to-token-4d63텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)