Graph APIを使用してパスワードを変更しようとするとエラーがAuthorization_RequestDenied
この記事では、Graph APIを使用してパスワードを変更しようとしたときにAuthorization_RequestDeniedエラーが発生する問題のトラブルシューティングについて説明します。
元の製品バージョン: Microsoft Entra ID
元の KB 番号: 3004133
現象
Microsoft Entra ユーザーのパスワードを変更しようとするとします。 そのユーザーの [組織ロール ] 設定が [管理者] オプションに設定されている場合、プロセスは失敗します。 次のエラー メッセージが生成されます。
{"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"操作を完了するための不十分な特権" }} }
アプリケーションまたは Application Service Principal にディレクトリ データの読み取りおよび書き込みアクセス許可を付与すると、アプリケーションは、Graph APIを使用して一般的なMicrosoft Entra ユーザーのパスワードを変更できます。 この設定は、次のスクリーンショットに示されています。
次のスクリーンショットに示すように、ユーザーの組織ロールの設定を変更することで、Microsoft Entra ユーザーを管理者として委任できます。
原因
この問題は、管理者の組織ロールを持つユーザーが、Office 365管理ロールの会社管理者またはユーザー アカウント管理者のメンバーでないために発生します。
解決方法
注:
Azure AD および MSOnline PowerShell モジュールは、2024 年 3 月 30 日の時点で非推奨となりました。 詳細については、 非推奨の更新プログラムに関するページを参照してください。 この日付以降、これらのモジュールのサポートは、Microsoft Graph PowerShell SDK への移行支援とセキュリティ修正に限定されます。 非推奨のモジュールは、2025 年 3 月 30 日まで引き続き機能します。
Microsoft Entra ID (旧称 Azure AD) と対話するには、Microsoft Graph PowerShell に移行することをお勧めします。 移行に関する一般的な質問については、移行に関する FAQ を参照してください。 メモ: バージョン 1.0.x の MSOnline では、2024 年 6 月 30 日以降に中断が発生する可能性があります。
この問題を解決するには、Office 365管理ロールで会社の管理者にアプリケーションを追加します。 これを行うには、Windows PowerShell (MSOL) コマンドレットに対して次のすべての Azure AD モジュールを実行します。
Connect-MsolService
テナントの資格情報の入力を求めるメッセージが表示されます。 Microsoft Entra管理ユーザー名は、形式でadmin@tenant.onmicrosoft.com
使用できます。
$displayName = "Application Name"
$objectId = (Get-MsolServicePrincipal -SearchString $displayName).ObjectId
"アプリケーション名" を"アプリケーション サービス プリンシパル" の名前に置き換えます。
$roleName = "Company Administrator"
Add-MsolRoleMember -RoleName $roleName -RoleMemberType ServicePrincipal -RoleMemberObjectId $objectId
"アプリケーション サービス プリンシパル" が会社の管理者ロールに追加されます。
また、Microsoft Entra ユーザーに次のいずれかの管理者組織ロールがある場合は、Office 365管理ロールのユーザー アカウント管理者にアプリケーションを追加する必要があります。
- グローバル管理者
- 課金管理者
- サービス管理者
これを行うには、次のすべての MSOL コマンドレットを実行します。
Connect-MsolService
$displayName = "Application Name"
$objectId = (Get-MsolServicePrincipal -SearchString $displayName).ObjectId
$roleName = "User Account Administrator"
Add-MsolRoleMember -RoleName $roleName -RoleMemberType ServicePrincipal -RoleMemberObjectId $objectId
両方のコマンドレットセットを実行すると、アプリケーションが有効になり、すべての 管理者 組織ロールのパスワードが変更されます。
注:
Office 365管理ロールにアクセス許可を追加した後、アクセス許可がアプリケーション サービス プリンシパルに適用されるまでに最大 30 分かかる場合があります。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。