Graph API を使用してパスワードを変更しようとすると "Authorization_RequestDenied" というエラー メッセージが表示される

適用対象: Azure Active Directory

現象


Microsoft Azure Active Directory (Azure AD) ユーザーの組織のロールがいずれかの "管理者" に設定されている場合に、当該ユーザーのパスワードを変更しようとすると、処理に失敗し、以下のエラー メッセージが表示されます。

"{"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."}}}"

(参考訳: {"odata.エラー":{"コード":"Authorization_RequestDenied","メッセージ":{"言語":"英語","値":"十分な権限がないため、この処理を完了できません。"}}})


ご利用のアプリケーションまたはアプリケーションのサービス プリンシパルに [Read and write directory data] (ディレクトリ データの読み取りと書き込み)権限を追加すると、Graph API を使用して通常の Azure AD ユーザーのパスワードをアプリケーションで変更することができます。この設定については、以下のスクリーン ショットを参照してください。
permissions screen
以下のスクリーン ショットに示したように、Azure AD ユーザーの組織のロール設定を変更すると、通常の Azure AD ユーザーを管理者として委任することができます。
role screen

原因


この問題は、組織のいずれかの ‶管理者” ロールを有しているユーザーが、Office 365 管理者ロールの "Company Administrator" または "User Account Administrator" に属していない場合に生じます。

解決方法


この問題を解決するには、Office 365 管理者ロールの "Company Administrator" へご利用のアプリケーションを追加します。以下のすべての Azure AD Module for Windows PowerShell (MSOL) コマンドレットを実行してください。

   #----------------------------------------------------------- # This will prompt you for your tenant's credential # You should be able to use your your Azure AD administrative user name # (in the admin@tenant.onmicrosoft.com format) #----------------------------------------------------------- Connect-MsolService #----------------------------------------------------------- # Replace the Application Name with the name of your # Application Service Principal #----------------------------------------------------------- $displayName = "Application Name" $objectId = (Get-MsolServicePrincipal -SearchString $displayName).ObjectId #----------------------------------------------------------- # This will add your Application Service Prinicpal to # the Company Administrator role #----------------------------------------------------------- $roleName = "Company Administrator" Add-MsolRoleMember -RoleName $roleName -RoleMemberType ServicePrincipal -RoleMemberObjectId $objectId 
また、通常の Azure AD ユーザーが以下に示した組織の "Administrator" ロールのいずれかを有している場合は、Office 365 管理者ロールの "User Account Administrator" へご利用のアプリケーションを追加する必要があります。
  • 全体管理者
  • 課金管理者
  • サービス管理者

以下の MSOL コマンドレットをすべて実行し、‶User Account Administrator” へアプリケーションを追加してください。

   #----------------------------------------------------------- # This will prompt you for your tenant's credential # You should be able to use your your Azure AD administrative user name # (in the admin@tenant.onmicrosoft.com format) #----------------------------------------------------------- Connect-MsolService #----------------------------------------------------------- # Replace the Application Name with the name of your # Application Service Principal #----------------------------------------------------------- $displayName = "Application Name" $objectId = (Get-MsolServicePrincipal -SearchString $displayName).ObjectId #----------------------------------------------------------- # This will add your Application Service Principal to # the Company Administrator role #----------------------------------------------------------- $roleName = "User Account Administrator" Add-MsolRoleMember -RoleName $roleName -RoleMemberType ServicePrincipal -RoleMemberObjectId $objectId 
双方のコマンドレットを実行した後、ご利用のアプリケーションで組織のすべての "Administrator" ロールのパスワードを変更できるようになります。

注: Office 365 管理者ロールにアクセス権限を追加後、アプリケーションのサービス プリンシパルにアクセス権限が適用されるまで最大 30 分かかります。

追加情報


Graph API を使用してパスワードをリセットする方法の詳細については、以下の Microsoft Azure Web サイトを参照してください。

その他トピックは、Office 365 コミュニティ Web サイトまたは Azure Active Directory フォーラムを参照してください。