Microsoft Graph の承認エラーを解決する

承認エラーは、いくつかの異なる問題の結果として発生する可能性があり、そのほとんどは 403 エラー (いくつかの例外はあります) を生成します。 たとえば、次の場合はすべて承認エラーが発生する可能性があります。

一般的なエラーを解決する手順

一般的な承認エラーを解決するには、発生しているエラーに最も近いエラーについて説明されている手順を試してください。 複数のエラーが適用される場合があります。 Microsoft Q&A で既に使用可能な回答で 401 エラーおよび 403 エラーを確認することもできます。 問題の解決策が見つからない場合は、 Microsoft Q&A に関する新しい質問 をし、 microsoft-graph* でタグを付けます。

401 未承認エラー: トークンは有効ですか?

アプリケーションが要求の一部として、Microsoft Graph への有効なアクセストークンを提示していることを確認します。 このエラーは、多くの場合、HTTP 認証要求ヘッダーにアクセス トークンが存在しないか、トークンが無効であるか、有効期限が切れている可能性があることを意味します。 アクセス トークンの取得には、Microsoft Authentication Library (MSAL) を使用することを強くお勧めします。 さらに、このエラーは、個人の Microsoft アカウントに付与されている代理アクセス トークンを使用して、職場または学校のアカウント (組織のアカウント) のみをサポートする API にアクセスしようとする場合に発生することがあります。

403 Forbidden エラー: 適切なアクセス許可のセットを選択しましたか?

アプリが呼び出す Microsoft Graph API に基づいて、適切なアクセス許可のセットを要求したことを確認します。 推奨される最小特権アクセス許可は、Microsoft Graph API メソッドの参照トピックで提供されいます。 また、これらのアクセス許可は、ユーザーまたは管理者がアプリケーションに付与する必要があります。 通常、アクセス許可の付与は、同意ページまたは Microsoft Entra 管理センター アプリケーション登録ブレードを使用してアクセス許可を付与することによって行われます。

403 Forbidden エラー: アプリは選択されたアクセス許可と一致するトークンを取得しましたか?

要求されたアクセス許可または与えられたアクセス許可の種類が、アプリが取得すアクセス トークンの種類と一致することを確認します。 アプリケーションのアクセス許可を要求して付与しますが、クライアント資格情報フロー トークンの代わりに、委任された対話型コード フロー トークンを使用する可能性があります。また、委任されたアクセス許可を要求して付与しますが、委任されたコード フロー トークンの代わりに、クライアント資格情報フロートークンを使用する可能性があります。

403 Forbidden エラー: パスワードの再設定

現在、ユーザー パスワードの再設定を許可するアプリケーションのアクセス許可デーモンサービス間のアクセス許可はありません。 これらの API は、サインインしている管理者による対話型の委任されたコード フローを使用する場合にのみサポートされます。

403不可: ユーザーにアクセス権があり、ライセンスが付与されていますか?

委任されたコード フローの場合、Microsoft Graph は、アプリに付与されたアクセス許可とサインインしたユーザーが持つアクセス許可に基づいて、要求が許可されているかどうかを評価します。 一般に、このエラーは、アクセスされているデータに対してユーザーにライセンスが付与されていない要求 または を実行するための十分な特権がユーザーにないことを示しています。 必要なアクセス許可またはライセンスを持つユーザーのみが要求を正常に行うことができます。

403 Forbidden: 正しいリソース API を選択しましたか?

Microsoft Graph などの API サービスは、受信したアクセス トークンの および クレーム (オーディエンス) が、それ自体が予期する値と一致することを確認します。一致しない場合は、403 Forbidden エラーとなります。 このエラーの原因となっている一般的な間違いは、Azure AD Graph API、Outlook API、または SharePoint/OneDrive API で取得したトークンを使用して Microsoft Graph を呼び出すことです (またはその逆)。 アプリがトークンを取得しているリソース (またはスコープ) が、アプリが呼び出している API と一致していることを確認してください。

400 要求が正しくありませんまたは 403 Forbidden: ユーザーは組織の条件付きアクセス (CA) ポリシーに準拠していますか?

組織の CA ポリシーに基づいて、アプリを使用して Microsoft Graph リソースにアクセスするユーザーは、アプリが最初に取得したアクセス トークンに存在しない追加情報を要求される場合があります。 この場合、アプリはアクセス トークンの取得中に interaction_required エラーと共に 400 を受け取り、Microsoft Graph を呼び出すときに insufficient_claims エラーと共に 403 を受け取ります。 どちらの場合も、エラー応答には、承認エンドポイントに提示して、ユーザーに追加情報 (多要素認証やデバイス登録など) を要求できる追加情報が含まれます。

403 禁止: OData へのアクセスが無効になっている

多くの Microsoft Graph API は、Exchange Onlineにアクセスします。 これらの API は、Exchange Onlineの EWS アプリケーション ポリシーの対象となります。 アプリケーションは、次の応答本文でエラーを受け取る 403 Forbidden 可能性があります。

{
    "error": {
        "code": "ErrorAccessDenied",
        "message": "Access to OData is disabled."
    }
}

これは、organizationの EWS アクセス ポリシーが原因である可能性があります。 Exchange 管理者は、Exchange Online PowerShell モジュールを使用してこれをチェックできます。

organization全体のポリシーが適用されているかどうかを判断するには、

Get-OrganizationConfig | fl EwsApplicationAccessPolicy,EWS*List

ユーザー固有のポリシーが適用されているかどうかを判断するには、次の手順を実行します。

Get-CASMailbox <user-principal-name> | fl EwsApplicationAccessPolicy,EWS*List

EwsApplicationAccessPolicy が設定されている場合は、ポリシーが適用されます。

  • が にEnforceAllowList設定されている場合EwsApplicationAccessPolicyは、アプリケーションのUser-Agent値を EwsAllowList 値に追加する必要があります。
  • が にEnforceBlockList設定されている場合EwsApplicationAccessPolicyは、アプリケーションのUser-Agent値を EwsBlockList 値から削除する必要があります。

注:

EWS アプリケーション ポリシーの変更は、有効にするのに時間がかかります。 変更を加えた後、しばらくの間、アプリケーションでエラーが発生 403 Forbidden し続ける可能性があります。