PowerShell とクレーム マッピング ポリシーを使用したクレームのカスタマイズ
要求とは、そのユーザーに発行するトークンの中にあるユーザーに関する ID プロバイダーが提示した情報を指します。 テナント管理者は、自身のテナントの特定のアプリケーションに対するトークンに組み込むクレームをカスタマイズできます。 要求のマッピング ポリシーを使用すると、次の操作を行うことができます。
- トークンに組み込むクレームを選ぶ。
- まだ存在しない種類のクレームを作成する。
- 特定のクレームに入れるデータのソースを指定、変更する。
要求のカスタマイズでは、SAML、OAuth、OpenID Connect のプロトコルに対する要求のマッピング ポリシーを構成できます。
Note
クレーム マッピング ポリシーは、カスタム クレーム ポリシーと、Microsoft Entra 管理センターを通じて提供されるクレームのカスタマイズの両方に代わるものです。 クレーム マッピング ポリシーを使用してアプリケーションに対するクレームをカスタマイズすることは、そのアプリケーションに対して発行されたトークンで、カスタム クレーム ポリシーの構成や Microsoft Entra 管理センターの[クレームのカスタマイズ] ブレード内の構成が無視されることを意味します。
前提条件
- Microsoft Entra テナントを取得する方法について学習します。
- 最新の Microsoft Graph PowerShell SDK をダウンロードします。
はじめに
次の例では、サービス プリンシパルのポリシーを作成、更新、リンク、および削除します。 クレームマッピング ポリシーは、サービス プリンシパル オブジェクトにのみ割り当てることができます。
要求のマッピング ポリシーを作成するときに、トークンのディレクトリ拡張属性から要求を発信するように設定することもできます。 ClaimsSchema
要素の ID ではなく、拡張属性の ExtensionID
を使用します。 拡張属性の詳細については、ディレクトリ拡張属性の使用に関するページをご覧ください。
ターミナルを開き、次のコマンドを実行して Microsoft Entra 管理者アカウントにサインインします。 新しいセッションを開始するたびにこのコマンドを実行します。
Import-Module Microsoft.Graph.Identity.SignIns
Connect-MgGraph -Scopes "Policy.ReadWrite.ApplicationConfiguration", "Policy.Read.All"
次に、要求のマッピング ポリシーを作成してサービス プリンシパルに割り当てます。 一般的なシナリオについては、次の例を参照してください。
クレームマッピング ポリシーを作成したら、トークンにカスタム クレームを組み込むことを承認するよう、アプリケーションを設定します。 詳しくは「セキュリティに関する考慮事項」を読んでください。
トークンから基本要求を除外する
この例では、リンク サービス プリンシパルに対して発行されたトークンから、基本要求セットを削除するポリシーを作成します。
クレームマッピング ポリシーを作成します。 このポリシーは、特定のサービス プリンシパルにリンクされ、トークンから基本要求セットを削除します。
開いているターミナルを使用して、次のコマンドを実行してポリシーを作成します。
New-MgPolicyClaimMappingPolicy -Definition @('{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"false"}}') -DisplayName "OmitBasicClaims"
新しいポリシーを表示し、ポリシーの
ObjectId
を取得するには、次のコマンドを実行します。Get-MgPolicyClaimMappingPolicy Definition DeletedDateTime Description DisplayName Id ---------- --------------- ----------- ----------- -- {"ClaimsMappingPolicy":{..}} OmitBasicClaims 36d1aa10-f9ac...
トークンに要求として EmployeeID
と TenantCountry
を含める
この例では、リンクされたサービス プリンシパルに対して発行されたトークンに、EmployeeID
と TenantCountry
を追加するポリシーを作成します。 EmployeeID は、SAML トークンと JWT の両方で名前要求の種類として出力されます。 TenantCountry は、SAML トークンと JWT の両方で国/リージョン要求の種類として出力されます。 この例では、操作を続行し、トークンに基本要求セットを含めます。
クレームマッピング ポリシーを作成します。 このポリシーは、特定のサービス プリンシパルにリンクされ、EmployeeID 要求と TenantCountry 要求をトークンに追加します。
ポリシーを作成するには、ターミナルで次のコマンドを実行します。
New-MgPolicyClaimMappingPolicy -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"
新しいポリシーを表示し、ポリシーの
ObjectId
を取得するには、次のコマンドを実行します。Get-MgPolicyClaimMappingPolicy
トークンで要求変換を使用する
この例では、リンクされたサービス プリンシパルに対して発行された JWT に、カスタム要求 "JoinedData" を出力するポリシーを作成します。 この要求には、ユーザー オブジェクトの extensionattribute1 属性に格納されたデータと "-ext" を結合して作成された値が追加されます。 この例では、トークンで基本要求セットを除外します。
クレームマッピング ポリシーを作成します。 このポリシーは、特定のサービス プリンシパルにリンクされ、トークンにカスタム要求
JoinedData
を出力します。ポリシーを作成するには、次のコマンドを実行します。
New-MgPolicyClaimMappingPolicy -Definition @('{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"true", "ClaimsSchema":[{"Source":"user","ID":"extensionattribute1"},{"Source":"transformation","ID":"DataJoin","TransformationId":"JoinTheData","JwtClaimType":"JoinedData"}],"ClaimsTransformations":[{"ID":"JoinTheData","TransformationMethod":"Join","InputClaims":[{"ClaimTypeReferenceId":"extensionattribute1","TransformationClaimType":"string1"}], "InputParameters": [{"ID":"string2","Value":"ext"},{"ID":"separator","Value":"-"}],"OutputClaims":[{"ClaimTypeReferenceId":"DataJoin","TransformationClaimType":"outputClaim"}]}]}}') -DisplayName "TransformClaimsExample"
新しいポリシーを表示し、ポリシーの
ObjectId
を取得するには、次のコマンドを実行します。Get-MgPolicyClaimMappingPolicy
要求のマッピング ポリシーをサービス プリンシパルに割り当てる
サービス プリンシパルにポリシーを割り当てるには、要求のマッピング ポリシーの ObjectId
と、ポリシーを割り当てる必要があるサービス プリンシパルの objectId
が必要です。
組織のすべてのサービス プリンシパルを表示するには、Microsoft Graph API にクエリを実行するか、Microsoft Graph エクスプローラーでチェックします。
テナント内のすべての要求のマッピング ポリシーを表示し、ポリシー
ObjectId
を取得するには、次のコマンドを実行します。Get-MgPolicyClaimMappingPolicy
要求のマッピング ポリシーとサービス プリンシパルの
ObjectId
がある場合は、次のコマンドを実行します。New-MgServicePrincipalClaimMappingPolicyByRef -ServicePrincipalId <servicePrincipalId> -BodyParameter @{"@odata.id" = "https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/<claimsMappingPolicyId>"}