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 フィードバック コミュニティに製品フィードバックを送信することもできます。