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."
    }
}

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

組織全体のポリシーが適用されているかどうかを判断するには、次の手順を実行します。

Get-OrganizationConfig | fl EwsApplicationAccessPolicy,EWS*List

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

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

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

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

注:

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

403 禁止エラー: アプリが、別のアクセス許可を持つ他のグループを含むグループにアクセスしようとしていますか?

アプリケーションがアクセスできないグループが所有するすべてのグループを確認します。 親グループ (他のグループをメンバーとして所有するグループ) が、アプリケーションがアクセスできる十分なアクセス許可を持っているが、別のグループのメンバーである子グループがアクセスできない場合、子グループと親グループの両方にアクセスできない場合は、子グループと親グループの両方へのアクセスに失敗します。

場合によっては、アクセス許可が不十分なため、アプリがグループまたはサービス プリンシパルの読み取りに失敗することがあります。 このエラーは、Microsoft でセキュリティ強化が進んだために、アプリが、アクセス許可が不十分な入れ子になったグループまたはサービス プリンシパルを含むこれらのグループを以前に読み取ることができた場合でも発生する可能性があります。