Bagaimana cara menambahkan klaim khusus dan mengambilnya sebagai bagian dari access_token, jika cakupannya bukan API Grafik di Azure AD?

Aug 19 2020

Saya telah membuat aplikasi web Azure AD. Sekarang saya mendapatkan access_token saya menggunakan API berikut,

POS https://login.microsoftonline.com/{Directory (tenant) ID }/oauth2/v2.0/token

password:pass 
client_id:id
resource:https://graph.microsoft.com 
grant_type:password 
client_secret:secret 
sername:userName 
scope: https://rbsessence.onmicrosoft.com/0a7c94a0-0c4e-4f95-ba06-XXXX/.default

Responnya terlihat seperti,

"token_type": "Bearer",
    "scope": "https://rbsessence.onmicrosoft.com/0a7c94a0-0c4e-4f95-ba06-XXXXX/myTestRole https://rbsessence.onmicrosoft.com/0a7c94a0-0c4e-4f95-ba06-XXXXXX/user_impersonation https://rbsessence.onmicrosoft.com/0a7c94a0-0c4e-4f95-ba06-XXXXX/.default",
    "expires_in": 3599,
    "ext_expires_in": 3599, "access_token": "acessToken"

Sekarang saya meneruskan access_token ke aplikasi pihak ketiga yang dikonfigurasi dengan klien Azure AD yang sama. Sekarang pihak ketiga tersebut mengharapkan klaim khusus dengan namanya "policy":"readwrite", untuk diteruskan sebagai bagian dari access_token. Bagaimana saya bisa mencapai hal yang sama?

Jawaban

1 AllenWu Aug 20 2020 at 04:26

Silakan merujuk ke langkah-langkah berikut (Anda dapat melakukan operasi Microsoft Graph di Microsoft Graph Explorer untuk menghemat waktu.):

Buat extensionProperty (Anda dapat menggunakan aplikasi Azure AD yang baru dibuat di sini):

Post https://graph.microsoft.com/v1.0/applications/{object id of the Azure AD application}/extensionProperties

{"name":"policy","dataType":"string","targetObjects":["User"]}

Ini akan menghasilkan properti ekstensi bernama extension_{client id of the Azure AD application}_policy.

Kedua, Anda dapat memperbarui properti ekstensi untuk akun Anda:

Patch https://graph.microsoft.com/v1.0/me

{"extension_6d8190fbf1fe4bc38a5a145520221989_policy":"readwrite"}

Kemudian buat claimMappingPolicy :

Post https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies

{"definition":["{\"ClaimsMappingPolicy\":{\"Version\":1,\"IncludeBasicClaimSet\":\"true\", \"ClaimsSchema\": [{\"Source\":\"user\",\"ExtensionID\":\"extension_6d8190fbf1fe4bc38a5a145520221989_policy\",\"JwtClaimType\":\"policy\"}]}}"],"displayName":"ExtraClaimsAllen1Example","isOrganizationDefault":true}

Tetapkan claimMappingPolicy ke servicePrincipal. Harap Perhatikan bahwa servicePrincipal di sini adalah aplikasi perusahaan yang mewakili aplikasi pihak ketiga Anda. Dalam kasus Anda itu 0a7c94a0-0c4e-4f95-ba06-XXXX.

Post https://graph.microsoft.com/v1.0/servicePrincipals/{obeject id of the servicePrincipal which represents your third party application}/claimsMappingPolicies/$ref

{"@odata.id":"https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/{policy id from the previous step}"}

Anda dapat menemukan servicePrincipal dari Azure Portal -> Azure Active Directory -> Pendaftaran aplikasi -> temukan aplikasi Azure AD pihak ketiga Anda -> Gambaran Umum -> klik nama prinsip layanan terkait.

Sekarang kembali ke file manifes dari aplikasi Azure AD pihak ketiga. Setel acceptMappedClaimske true dan accessTokenAcceptedVersionke 2.

Kemudian ketika kami meminta token akses untuk aplikasi pihak ketiga dengan aliran hibah ROPC, kami bisa mendapatkan klaim khusus.