API の使用時に発生した HTTP 401 エラーのトラブルシューティング

まとめ

この記事では、Azure API Management で API を使用するときに発生する HTTP 401 エラーのトラブルシューティング方法について説明します。

この記事は、Azure API Management トラブルシューティング シリーズ ラボの 3 番目のシナリオです。 API Management トラブルシューティング シリーズのラボ手順に従って、ラボのセットアップを行ってください。

元の製品バージョン: API Management サービス
元の KB 番号: 4464930

症状

Echo API によって、さまざまな種類の HTTP 401 - 操作の実行時に未承認 のエラーが発生し始めます。 リソースの作成リソースの取得 操作では、次のエラー メッセージが表示されます。

"statusCode": 401,
"message": "無効なサブスクリプション キーが原因でアクセスが拒否されました。 アクティブなサブスクリプションに対して有効なキーを指定してください。

その他の操作では、次のエラー メッセージが表示されます。

"statusCode": 401,
"message": "サブスクリプション キーがないためアクセスが拒否されました。 API への要求を行うときは、必ずサブスクリプション キーを含めるようにしてください。

Troubleshooting

API 製品サブスクリプション プロセスでは、サブスクリプション キーを取得します。 要求ヘッダーの一部として送信すると、その製品内の任意の API に対して機能します。 Ocp-Apim-Subscription-Key 要求ヘッダーは、この API に関連付けられている製品のサブスクリプション キー用です。 キーが自動的に入力されます。

無効なサブスクリプション キーが原因でアクセスが拒否された場合。アクティブなサブスクリプション エラーに対して有効なキーを指定してください。リソースの作成リソースの取得操作を実行するときに、要求ヘッダーに間違った Ocp-Apim-Subscription-Key 値を送信します。

次の例に示すように、API Management 開発者ポータルにサインインし、サインイン後に [プロファイル ] ページに移動して、特定の製品のサブスクリプション キーを確認します。

各製品のサブスクリプション キーのスクリーンショット。

[ 表示 ] を選択すると、サブスクライブした各製品のサブスクリプション キーが表示されます。

[テスト] タブから送信するヘッダーを確認します。Ocp-Apim-Subscription-Key 要求ヘッダーの値が正しくないことに注意してください。

ここで、[デザイン] タブの [リソースの作成] および [リソースの取得] 操作のFrontend定義を確認します。これらの操作の [ヘッダー] タブに追加された Ocp-Apim-Subscription-Key 要求ヘッダーのハードコーディングされた値が間違っていることに注意してください。

削除すると、無効なサブスクリプション キーの問題は解決されますが、サブスクリプション キーの不足エラーは解決されません。

次のエラー メッセージが表示される場合があります:

HTTP/1.1 401 認証されていない

コンテンツ長:152
コンテンツ タイプ: アプリケーション/json
日付: 2018 年 7 月 29 日 (日) 14:29:50 GMT
Vary: Origin WWW-Authenticate: AzureApiManagementKey realm="https://pratyay.azure-api.net/echo",name="Ocp-Apim-Subscription-Key",type="header" {
"statusCode": 401,
"message": "サブスクリプション キーがないためアクセスが拒否されました。 API への要求を行うときは、必ずサブスクリプション キーを含めるようにしてください。

Echo API の設定に移動し、使用可能な製品のいずれかに関連付けられているかどうかを確認します。 そうでない場合は、サブスクリプション キーを取得できるように、この API を製品に関連付ける必要があります。

サブスクリプション プロセス中に API Management インスタンスを作成した場合、既定では管理者になります。 これは、すべての製品をサブスクライブしていることを意味します。