私はAzure ADアプリを持っています、そして私はJWTへのカスタムクレームを追加しようとしています。私は私の特定のアプリのためにAzureでクレームマッピング機能を使用しており、azureポータルでアプリがオプションの請求を含めるようにアップデートしました。ただし、復号化されたアクセストークンをログインして表示すると、クレームはトークンには存在しません。クレームとしての拡張属性を使用することに関する多くのドキュメントが見つかりませんでしたが、私が見つけたことから、同じパターンに従うべきですが、予想通りに機能していません。
ユーザーがログインしたときに、ADのユーザーオブジェクトのカスタムプロパティからサポートされているカスタムクレームを追加するにはどうすればよいですか。
前もって感謝します!
リクエスト:
POST https://graph.windows.net/mytenant.onmicrosoft.com/applications/<application-object-id>/extensionProperties?api-version=1.5
体:
{
"name": "customUserRoles",
"dataType": "String",
"targetObjects": ["User"]
}
リクエスト:
PATCH https://graph.windows.net/mytenant.onmicrosoft.com/users/[email protected]?api-version=1.5
体:
{
"extension_<appId>_customUserRoles": "My Custom Role 1, Another Role 2"
}
Install-Module -Name AzureADPreview
New-AzureADPolicy -Definition @('{"ClaimsMappingPolicy":{"Version": 1, "IncludeBasicClaimSet": "true", "
ClaimsSchema": [ { "Source": "user", "ID": "extension_<appId>_customUserRoles", "JwtClaimType": "customUserRoles" } ] } }') -DisplayName "customUserRoles" -Type "ClaimsMappingPolicy"
Add-AzureADServicePrincipalPolicy -Id <service-principla-id> -RefObjectId <Azure-ad-policy-id>
{
...
"acceptMappedClaims: true,
"optionalClaims": {
"idToken": [
{
"name": "extension_<appId>_customUserRoles",
"source": "user",
"essential": false,
}
],
"accessToken": [
{
"name": "extension_<appId>_customUserRoles",
"source": "user",
"essential": false,
}
],
"samlToken": []
}
}
https://login.microsoftonline.com/mytenant.onmicrosoft.com/oauth2/authorize?client_id=<appId>&response_type=token&resource=https://mytenant.sharepoint.com
に移動してログインしてください[email protected]
access_token
パラメータの値をコピーします。https://jwt.ms
に移動し、テキスト領域のアクセストークンを貼り付けます私の期待は、復号化されたトークンでcustomUserRoles
またはextn.customUserRoles
という名前の新しい請求を見るべきです。
私は何のステップがありませんか?私はこのプロセス全体のエラーを獲得していませんが、ドキュメントが提案されているので機能しているようです。
これらのトピックに関するマイクロソフトのマニュアルを読みました。
オプションの特許請求の範囲: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional - claims
クレームマッピング: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory - claims-mapping
私はまた、これに関連するさまざまなフォーラム投稿とブログの記事を読みました。
https://devonblog.com/cloud/azure-ad-adding-employeeid-claims-in-azure-ad-jwt-token/
に基づく この公式 DOC:
アクセストークンは、クライアントではなく、リソースのマニフェストを使用して常に生成されます。そのため、リクエスト内... scope = https://graph.microsoft.com/user.read ...リソースはグラフです。したがって、クライアントのマニフェストではなく、Graph Manifestを使用してアクセストークンが作成されます。アプリケーションのマニフェストを変更すると、グラフにトークンが異なるように見えることはありません。 AccessTokenの変更が有効であることを検証するには、別のアプリではなくアプリケーションのトークンを要求してください。
そしてあなたの要求に基づいて、MSFTによって作成され管理されたマルチテナントアプリであるSharePoint Onlineのどのリソースの変更をいくつか変更したい場合は不可能です。
このDOC 、私はまたあなたのためにいくつかの研究をしました。そしてそれと同じ、あなたはそれを起こすことができるようにサービス側のアプリを制御する必要があります。
これは私のポリシーロール割り当てコマンドです。
$nsp = New-AzureADPolicy -Definition @('{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"true", "ClaimsSchema": [{"Source":"user","ID":"mailnickname","JwtClaimType":"testclaim"}]}}') -DisplayName "StanCustomCliamDemo_surname" -Type "ClaimsMappingPolicy"
Add-AzureADServicePrincipalPolicy -RefObjectId $nsp.Id -Id '<obj id of service side app>'
_
さらに、PLSはextension_<appId>_customUserRoles
は有効なユーザーソースIDではありません。有効なすべてのユーザーソースIDについて、PLSは ここで を参照してください。
それが役に立てば幸い 。