この記事のポイント
401エラーが出たらまずjwt.msでトークンのaud・iss・expを確認すべき。トークン起因が最も多い
サービスプリンシパルのシークレット期限切れは本番障害の主因。Azure Key Vaultで自動ローテーションを設定するのが最善策
アプリからAzureリソースへのアクセスにはマネージドIDを最優先で使う。シークレット管理自体をなくせるため401リスクを根本から排除できる
401と403の切り分けが最初の一手。401は「認証失敗(本人確認不可)」、403は「認可不足(権限不足)」で対処が異なる
RBAC割り当て直後は最大30分の伝播遅延がある。ロール追加後に401が続いても設定ミスとは限らない

Microsoft MVP・AIパートナー。LinkX Japan株式会社 代表取締役。東京工業大学大学院にて自然言語処理・金融工学を研究。NHK放送技術研究所でAI・ブロックチェーンの研究開発に従事し、国際学会・ジャーナルでの発表多数。経営情報学会 優秀賞受賞。シンガポールでWeb3企業を創業後、現在は企業向けAI導入・DX推進を支援。
Azure環境でAPIやリソースにアクセスした際に「401 Unauthorized」エラーが表示されると、サービスが利用できなくなるだけでなく、認証設定に問題がある可能性を示す重要なシグナルです。このエラーは、認証トークンの不備や有効期限切れ、サービスプリンシパルの設定ミスなど、さまざまな原因で発生します。
Microsoft Entra ID(旧Azure Active Directory)を中心とした認証基盤では、OAuth 2.0やOpenID Connectによるトークンベース認証が標準となっており、正しい設定を行えばセキュアなアクセス制御が実現できます。
本記事では、Azure環境における401エラーの7つの発生原因と原因別の対処法を解説します。4ステップのトラブルシューティング手順から予防のためのベストプラクティスまで、401エラーを確実に解決するための実践的な知識を紹介します。
Azureの401エラー(Unauthorized)とは
HTTP 401 Unauthorizedは、クライアントがリソースにアクセスする際に、認証情報が提供されていない、または提供された認証情報が無効であることを示すステータスコードです。Azure環境では、REST APIの呼び出し時にBearerトークンが含まれていないケースや、Microsoft Entra ID(旧Azure Active Directory)で発行されたトークンのaudience(対象者)が不一致のケース、API Managementのサブスクリプションキーが不正なケースなどで発生します。
401エラーを理解するうえで重要なのは、403 Forbiddenエラーとの違いです。以下の表で両者を比較します。
| 項目 | 401 Unauthorized | 403 Forbidden |
|---|---|---|
| 意味 | 認証に失敗した(本人確認ができない) | 認可が不足している(権限がない) |
| 発生タイミング | 認証プロセスで失敗 | 認証は成功したが、リソースへのアクセス権がない |
| 主な原因 | トークン未添付、トークン無効、トークン有効期限切れ | RBACロール未割当、条件付きアクセスによるブロック |
| 対処の方向性 | 正しい認証情報の提供、トークンの再取得 | ロールの割り当て、アクセスポリシーの確認 |
つまり、401は「あなたが誰か分からない」状態であり、403は「あなたが誰かは分かったが、この操作を行う権限がない」状態です。エラーメッセージの内容を確認し、認証の問題なのか認可の問題なのかを最初に切り分けることが、効率的なトラブルシューティングの第一歩となります。
Azure環境における認証フローは、クライアントがMicrosoft Entra IDからトークンを取得し、そのトークンをリクエストのAuthorizationヘッダーに含めてリソースにアクセスする仕組みです。このフローのいずれかの段階で問題が発生すると、401エラーが返されます。
Azure 401エラーの主な発生原因
Azure環境における401エラーの発生原因は多様です。以下では、発生頻度の高い7つの原因パターンを解説します。
認証トークンが含まれていない
Azure REST APIやリソースへのアクセスには、HTTPリクエストのAuthorizationヘッダーにBearer形式でアクセストークンを含める必要があります。このヘッダーが省略されている場合、サーバーはクライアントの身元を確認できず、401エラーを返します。
API Managementでは、このエラーは「Access denied due to missing subscription key」というメッセージとともに返されます。Ocp-Apim-Subscription-Keyヘッダーが含まれていないことが原因です。APIが製品(Product)に関連付けられているかを確認し、開発者ポータルのプロフィールページで正しいサブスクリプションキーを取得してください。
トークンのaudience(対象者)またはissuer(発行者)の不一致
Microsoft Entra IDから取得したトークンのaudienceクレーム(aud)が、アクセス先のリソースが期待する値と一致しない場合、401エラーが発生します。例えば、Azure Key Vault用のトークンでAzure Storage APIにアクセスしようとした場合、audienceが異なるためアクセスは拒否されます。
同様に、トークンのissuer(iss)がリソース側で期待するMicrosoft Entra IDテナントと異なる場合も401エラーとなります。マルチテナントアプリケーションでは、テナントIDがトークンのissuerに含まれるため、異なるテナントのトークンでアクセスしようとするとこの問題が発生します。トークンの内容はjwt.msで確認でき、aud、iss、expの各クレームを検証できます。
トークンの有効期限切れ
アクセストークンには有効期限が設定されており、Microsoft Entra IDが発行するアクセストークンの既定の有効期間は60分から90分です。有効期限が切れたトークンでリクエストを送信すると、401エラーが返されます。
多くの認証フレームワーク(MSAL: Microsoft Authentication Library)では、リフレッシュトークンを使用してアクセストークンを自動的に更新する仕組みが用意されています。アプリケーション側でトークンキャッシュを適切に実装し、有効期限切れ前にトークンを更新する処理を組み込むことが推奨されます。
サービスプリンシパルの設定不備
アプリケーションがAzureリソースにアクセスするために使用するサービスプリンシパルの設定に問題がある場合、401エラーが発生します。具体的には、Microsoft Entra IDの「アプリの登録」でクライアントIDやクライアントシークレットが正しく設定されていない、またはクライアントシークレットの有効期限が切れているケースが一般的です。
クライアントシークレットの既定の有効期限は最大2年間ですが、セキュリティの観点から6か月から12か月での定期的なローテーションが推奨されます。シークレットの期限切れは予告なく401エラーを引き起こすため、Azure Key Vaultでシークレットを管理し、期限切れのアラートを設定しておくことが重要です。
マネージドIDの権限不足
Azure仮想マシンやAzure Functions、App ServiceでマネージドIDを使用してAzureリソースにアクセスする場合、マネージドIDに適切なRBACロールまたはAPIアクセス権限が付与されていないと401エラーが発生します。
マネージドIDには、システム割り当てとユーザー割り当ての2種類があります。システム割り当てマネージドIDはリソースのライフサイクルに紐づいて自動管理されますが、ユーザー割り当てマネージドIDはリソースとは独立して管理されます。いずれの場合も、アクセス先のリソースに対するRBACロールまたはMicrosoft Graph APIのアプリケーション権限を明示的に割り当てる必要があります。
API Managementのサブスクリプションキー問題
API Managementで管理されるAPIにアクセスする際、サブスクリプションキーが無効または誤っている場合に「Access denied due to invalid subscription key」というメッセージとともに401エラーが返されます。これは、APIのフロントエンド定義でOcp-Apim-Subscription-Keyヘッダーに誤った値がハードコードされているケースや、APIが製品に関連付けられていないケースで発生します。
また、JWTトークンの検証ポリシーが設定されている場合、トークンのクレーム(名前、値)がポリシーで期待する値と一致しないと401エラーとなります。Microsoft Entra IDに登録されているアプリケーション名とクレーム名が一致しているか確認してください。
クライアント証明書認証の問題
証明書ベース認証(CBA: Certificate-Based Authentication)を有効にしている環境では、クライアント証明書が無効(有効期限切れ、失効、信頼されていないCAからの発行)な場合に401エラーが発生します。Microsoft Entra IDの証明書ベース認証では、証明書のSubjectまたはSAN(Subject Alternative Name)がディレクトリ内のユーザーアカウントにマッピングされている必要があります。
証明書の検証に失敗した場合、Microsoft Entra IDのサインインログに詳細なエラー情報が記録されます。「監視」セクションのサインインログで、影響を受けたユーザーとリソースでフィルタリングし、エラーの詳細を確認してください。
Azure 401エラーの原因別対処法
401エラーの対処は、原因によって手順が異なります。以下では、代表的な対処パターンを解説します。
トークン関連の対処法
トークンの問題が疑われる場合、まずトークンの内容をjwt.msでデコードして確認します。確認すべきクレームは以下の3つです。
-
aud(audience)
トークンの対象者が、アクセス先リソースのアプリケーションIDまたはリソースURIと一致しているか確認します
-
iss(issuer)
トークンの発行者が、期待するMicrosoft Entra IDテナントのエンドポイントと一致しているか確認します
-
exp(expiration)
トークンの有効期限が切れていないか確認します。Unix時間(エポック秒)で記載されているため、変換して現在時刻と比較してください
トークンが無効または期限切れの場合は、Azure CLIで新しいトークンを取得できます。az loginでログインした後、az account get-access-tokenコマンドで新しいアクセストークンを取得し、リクエストのAuthorizationヘッダーに設定してリクエストを再送してください。
サービスプリンシパルの対処法
サービスプリンシパルに起因する401エラーの場合は、以下の手順で確認と修正を行います。
-
クライアントシークレットの確認
Azure PortalのMicrosoft Entra ID「アプリの登録」で対象のアプリケーションを選択し、「証明書とシークレット」セクションでシークレットの有効期限を確認します。期限切れの場合は新しいシークレットを生成してください
-
APIアクセス許可の確認
「APIのアクセス許可」セクションで、アプリケーションに必要な権限(Microsoft Graph、Azure Management APIなど)が付与されているか確認します。管理者の同意が必要な権限は、「管理者の同意を付与する」ボタンで承認してください
-
リダイレクトURIの確認
「認証」セクションで、リダイレクトURIがアプリケーションの実際のURIと一致しているか確認します
マネージドIDの対処法
マネージドIDの権限不足が原因の場合、アクセス先のリソースの「アクセス制御(IAM)」セクションでロールの割り当てを確認します。

IAMのアイコン
マネージドIDに必要なロール(閲覧者、共同作成者、ストレージBLOBデータ閲覧者など)が割り当てられているか確認し、不足している場合はロールを追加してください。RBACロールの割り当ては反映に最大30分かかる場合があるため、ロール割り当て直後に401エラーが続く場合はしばらく待ってから再試行してください。
Microsoft Graph APIへのアクセスが必要な場合は、RBACではなくアプリケーション権限をMicrosoft Entra IDで付与する必要がある点に注意してください。
API Managementの対処法
API Managementの401エラーは、以下の手順で対処します。
-
サブスクリプションキーの確認
開発者ポータルのプロフィールページで、対象APIの製品に対する正しいサブスクリプションキーを確認します
-
フロントエンド定義の確認
APIのDesignタブで各オペレーションのHeaders設定を確認し、Ocp-Apim-Subscription-Keyに誤った値がハードコードされていないか確認します。ハードコードされている場合は削除してください
-
製品との関連付け
APIがいずれかの製品に関連付けられていることをSettingsタブで確認します。関連付けられていない場合は、適切な製品にAPIを追加してください
Azure 401エラーのトラブルシューティング手順
401エラーが発生した場合、以下の4ステップで体系的に原因を特定していきます。
Step 1 エラーメッセージの確認
最初に、401エラーのレスポンスボディに含まれるエラーメッセージを確認します。Azure環境では、エラーメッセージに問題の具体的なヒントが含まれていることが多くあります。例えば、「Access denied due to missing subscription key」であればAPI Managementのサブスクリプションキー問題、「Authorization token failed validation」であればトークンの検証失敗、「The token has expired」であればトークンの有効期限切れと、メッセージから原因を直接特定できるケースが多いです。
WWW-Authenticateレスポンスヘッダーにも重要な情報が含まれます。このヘッダーには、必要な認証方式(Bearer、Basic、Certificateなど)やリソースのrealm情報が記載されているため、認証方式の不一致を検出できます。
Step 2 サインインログの確認
Microsoft Entra IDの認証に関連する401エラーの場合、Azure PortalのMicrosoft Entra ID「監視」セクションのサインインログを確認します。影響を受けたユーザーまたはサービスプリンシパルでフィルタリングし、認証の結果と失敗理由を確認してください。
サインインログには、認証が成功したか失敗したか、失敗した場合のエラーコード(AADSTS系エラー)、条件付きアクセスの評価結果、使用されたクライアントアプリやデバイスの情報が記録されます。AADSTS700016(アプリケーションが見つからない)やAADSTS65001(同意が付与されていない)など、具体的なエラーコードから原因を特定できます。
Step 3 トークンの検証
トークン関連の問題が疑われる場合、jwt.msでトークンをデコードして内容を検証します。aud、iss、exp、scp(スコープ)、roles(ロール)の各クレームが期待する値と一致しているか確認してください。
Azure Log Analyticsを有効にしている場合は、リソースの診断ログで401エラーの詳細な情報を確認できます。Application GatewayやApp Serviceのアクセスログには、リクエストのAuthorizationヘッダーの有無やトークン検証の結果が記録されます。
Step 4 サポートへの問い合わせ
上記の手順で問題が解決しない場合は、Microsoftサポートへの問い合わせを検討します。問い合わせ時には、エラーが発生した正確な日時、リソースのIDまたはURL、使用した認証方式(Bearer/SAS/証明書など)、エラーレスポンスの全文、サインインログのCorrelation IDを記録して提供してください。Azureサポートプランの詳細は後述の料金比較セクションを参照してください。
Azure 401エラーを未然に防ぐベストプラクティス
401エラーの再発を防止するためには、認証基盤の設計段階から適切な対策を講じることが重要です。以下では、実務で特に効果の高い4つの予防策を紹介します。
マネージドIDの優先使用
アプリケーションからAzureリソースにアクセスする場合、サービスプリンシパルのクライアントシークレットではなくマネージドIDの使用を優先してください。マネージドIDはMicrosoft Entra IDによって自動管理されるため、シークレットの期限切れや漏洩のリスクを排除できます。システム割り当てマネージドIDはリソースの削除とともに自動的にクリーンアップされるため、管理の手間も最小限に抑えられます。
仮想マシン、App Service、Azure Functions、Azure Kubernetes Serviceなど、主要なAzureサービスはマネージドIDをサポートしています。オンプレミス環境やAzure外のアプリケーションからのアクセスでは、ワークロードID連携(Workload Identity Federation)を使用することで、シークレットなしでの認証が可能です。
シークレットと証明書の定期ローテーション
サービスプリンシパルのクライアントシークレットや証明書は、定期的にローテーションすることが不可欠です。Azure Key Vaultのシークレットローテーション機能を活用し、6か月から12か月の間隔で自動ローテーションを設定してください。
Azure Monitorでアラートルールを設定し、シークレットの有効期限が30日以内に迫った場合に通知を受けるようにすることも推奨されます。シークレットの期限切れは本番環境での予期せぬ401エラーの主要な原因の一つです。
RBACの最小権限原則
リソースへのアクセス権限は、必要最小限のロールを割り当てる最小権限原則に従ってください。例えば、ストレージアカウントの読み取りのみが必要な場合は「共同作成者」ではなく「ストレージBLOBデータ閲覧者」を割り当てます。過剰な権限の付与はセキュリティリスクを高めるだけでなく、権限の棚卸しや監査を困難にします。
Microsoft Sentinelを導入している場合は、異常な認証パターン(短時間での大量の401エラー、通常と異なる地域からのアクセス試行など)を自動検知するルールを設定することで、認証に関するセキュリティインシデントの早期発見が可能です。
MFA必須化への事前対応
Microsoft Entra IDでは、管理操作に対する多要素認証(MFA)の必須化が段階的に進められています。Phase 1(2024年10月)ではAzure Portal、Entra管理センター、Intune管理センターへのアクセスにMFAが必須となり、Phase 2(2025年10月)ではAzure CLI、Azure PowerShell、Azure Mobile Appにも拡大されました。
MFAが有効な環境では、対話型のログインフローに対応していないアプリケーションが401エラーを返す可能性があります。自動化スクリプトやバッチ処理では、サービスプリンシパルまたはマネージドIDを使用し、ユーザーアカウントでの認証を避けることで、MFA関連の401エラーを回避できます。
Azure 401エラーの注意点と実務での落とし穴
昨日まで正常に動作していたAPIやアプリケーションが、突然401エラーを返し始める——開発者や運用担当者にとって、この状況は予想以上に頻繁に発生します。以下では、実務で特に見落としやすい4つの落とし穴を紹介します。
-
クライアントシークレットのサイレント期限切れ
サービスプリンシパルのクライアントシークレットは、有効期限が切れても事前に通知されません。特に本番環境で長期間稼働しているアプリケーションでは、シークレットの期限切れが突然の401エラーとして表面化します。Azure Key Vaultでシークレットを管理し、有効期限の30日前にアラートを設定することで、この問題を予防できます
-
RBAC伝播遅延
RBACロールの割り当てまたは削除は、反映されるまでに最大30分かかることがあります。ロール割り当て直後に401エラーが発生した場合、権限の設定ミスではなく伝播遅延が原因である可能性があります。ロール割り当て後は十分な待ち時間を確保してからテストしてください
-
トークンのaudience不一致
開発環境と本番環境でMicrosoft Entra IDのアプリ登録が異なる場合、誤った環境のトークンを使用するとaudience不一致で401エラーが発生します。環境ごとにアプリケーション設定(クライアントID、テナントID、リソースURI)が正しく構成されているか確認してください
-
Azure Active Directory → Microsoft Entra IDへのブランド変更
Azure Active Directory(Azure AD)はMicrosoft Entra IDにブランド変更されましたが、APIエンドポイントやSDKの一部は旧名称を使用し続けています。ドキュメントやコード内で旧エンドポイント(login.microsoftonline.com)と新エンドポイント(login.microsoftonline.com — 現時点では同一)を混在させても認証上の問題は生じませんが、内部のテナント設定やアプリ登録で旧ポータルの設定が残っていると、予期しない認証エラーにつながることがあります
【無料DL】AI業務自動化ガイド(220P)
Microsoft環境でのAI活用を徹底解説
Microsoft環境でのAI業務自動化・AIエージェント活用の完全ガイドです。Azure OpenAI、AI Agent Hub、n8nを活用した業務効率化の実践方法を詳しく解説します。
Azureサポートプランの料金比較
401エラーの調査でMicrosoftサポートへの問い合わせが必要になった場合、利用可能なサポートプランの選択が重要になります。以下の表は、2026年3月時点のAzureサポートプラン5種の比較です。
| プラン | 月額料金 | 技術サポート | 初回応答時間(重大) | 対象 |
|---|---|---|---|---|
| Basic | 無料 | なし(セルフサービスのみ) | - | 全ユーザー |
| Developer | 約29ドル | メール対応(営業時間内) | 8営業時間以内 | 開発/テスト環境 |
| Standard | 100ドル | 電話・メール(24時間365日) | 1時間以内 | 本番ワークロード |
| Professional Direct | 1,000ドル | 電話・メール + プロアクティブガイダンス | 15分以内 | ビジネスクリティカル |
| Unified | 個別見積り | 専任サポートチーム + テクニカルアカウントマネージャー | 15分以内 | エンタープライズ |
認証関連の問題は、特にMicrosoft Entra IDの設定やトークン検証に関わる場合、問題の切り分けに専門知識が必要になることがあります。本番環境で認証障害が発生している場合は、1時間以内の初回応答が保証されるStandard以上のプランが推奨されます。最新の料金や詳細については、Azureサポートプラン公式ページを確認してください。
まとめ
本記事では、Azure環境における401 Unauthorizedエラーの発生原因と対処法を解説しました。401エラーは認証トークンの未添付や無効化、サービスプリンシパルの設定不備、マネージドIDの権限不足、API Managementのサブスクリプションキー問題、クライアント証明書の問題など、多様な原因で発生します。
対処にあたっては、まずエラーメッセージとWWW-Authenticateヘッダーから原因を推定し、サインインログの確認、トークンの検証と段階的に調査を進めることが効果的です。予防策としては、マネージドIDの優先使用、シークレットの定期ローテーション、RBACの最小権限原則の適用が有効です。
まずはAzure PortalのMicrosoft Entra IDサインインログで、401エラーが発生した時刻のログエントリを確認し、エラーコードと失敗理由を特定してみてください。サービスプリンシパルを使用している場合は、クライアントシークレットの有効期限が切れていないかも合わせて確認することをお勧めします。Azureの障害事例やセキュリティ対策と合わせて、安定した認証基盤の構築を目指してください。











