OAuth 2.0 認証
HTTP クライアントは OAuth 2.0 認証をサポートします。 アクセストークンを取得し、OAuth 2.0 で保護されたリソースへのリクエストを認証できます。 ユーザー認証情報を入力できるようにするために、HTTP クライアントは組み込みの JCEF ブラウザーにログインフォームを表示します。 この非モーダルブラウザーでは、IDE での作業が妨げられることはなく、たとえば、ユーザー名とパスワードをコピーして貼り付けることができます。
一般的なフローには次の手順が含まれます:
認証設定を指定する (認可タイプやトークン URL など) (パブリック環境ファイル内の JSON 形式)。
この認証構成を参照し、HTTP リクエストで
$auth.token変数を使用します。リクエストを実行します。 認証が成功すると、保護されたリソースにアクセスできます。 受信したアクセストークンとリフレッシュトークンは、 HTTP クライアント認証ログ または サービス ツールウィンドウで確認できます。
アクセストークンを手動でリフレッシュしたり、 新しいトークンを要求して認証手順を再初期化したりすることもできます。
認証構成の作成
.http ファイルの 実行環境で実行する リストで、認証構成を追加する環境を選択します。
ツールバーで「
」をクリックし、「認証構成 」を選択します。
これにより、選択した環境の
"Security"にある"Auth"オブジェクト内のパブリック環境ファイルに認証構成テンプレートが追加されます。 例:{ "dev": { "Security": { "Auth": { "auth-id": { "Type": "OAuth2", "Grant Type": "", "Client ID": "" } } } } }プレースホルダー
auth-idを、 .http ファイル内でこの構成を参照するために使用する意味のある名前に置き換えます。認証パラメーターを指定します。 必要なパラメーターは選択した
"Grant Type"によって異なります。 認証パラメーターを入力する際、WebStorm コーディング支援を使用可能です。パラメーターの名前を入力し始めるか、 Ctrl+Space を押すと、利用可能な JSON 鍵の一覧が表示されます。
HTTP リクエストで認証構成を使用する
認証構成が作成されたら、それを使ってアクセストークンを取得し、リクエストを認証できます。
認証構成の名前を
{{$auth.token()}}変数に渡します (例:{{$auth.token("my-config")}})。 この変数は、リクエストAuthorizationヘッダーまたはクエリパラメーターで使用できます。「
」をクリックしてリクエストを送信します。 保護されたリソースにアクセスする前に、HTTP クライアントは認可サーバーにリクエストを送信してアクセストークンを取得します。
プロンプトが表示されたら、認証プロセスを完了します。 認証が正常に完了すると、HTTP クライアントは保護されたリソースにアクセスします。
{{$auth.token()}} 変数をすばやく追加するには、ライブテンプレートを使用します:HTTP メソッドのヘッダーセクションで AuthorizationToken と入力し、表示される候補のリストから利用可能な認証を選択します。

このようなリクエストを実行すると、 サービス ツールウィンドウで 認証ログの表示 ボタンが使用できるようになります。 リダイレクトページ、アクセストークン、その他の認証の詳細を表示できます。
アクセストークンを手動で取得する
HTTP リクエストで認証構成を参照すると、HTTP クライアントは、保護されたリソースにアクセスする前にアクセストークンを自動的に取得 (またはリフレッシュ) します。 保護されたリソースに実際のリクエストを送信せずにアクセストークンを取得したい場合は、アクセストークンを手動で取得できます。
http-client.env.json ファイルで、認証構成名の横にある
をクリックします。
認証構成に プライベート変数が含まれている場合は、表示されるポップアップでプライベート環境ファイルを選択します。
プロンプトが表示されたら、認証プロセスを完了します。
認証が正常に完了すると、WebStorm はアクセストークンを取得します。 すでにアクセストークンを持っていて有効期限が切れている場合は、WebStorm がリフレッシュします。
新しいアクセストークンを取得する
トークンをリフレッシュする以外に、再認証、つまり最初のアクセストークンを取得したときと同じフローを繰り返すことで新しいトークンを取得できます。
http-client.env.json ファイルで、認証構成名にキャレットを置きます。
Alt+Enter (コンテキストアクションの表示) を押して、 認証トークンの強制取得 を選択します。
認証構成に プライベート変数が含まれている場合は、表示されるポップアップでプライベート環境ファイルを選択します。
キャレットが .http ファイル内の $auth.token 変数上にある場合、同じアクションを呼び出すことができます。 この場合、HTTP クライアントは .http ファイルと同じフォルダーにある環境ファイルを使用するため、プライベート環境ファイルを選択する必要はありません。
新しいトークンをリフレッシュまたは取得すると、アクセスおよびリフレッシュトークンとその他の認証の詳細が HTTP クライアント認証ログ ツールウィンドウ () に表示されます。

ブラウザーの Cookie をクリア
認可サーバーは、ブラウザーの Cookie に認証データを保存する場合があります。 異なるデータを使用して認証フローをテストする場合は、組み込みの JCEF ブラウザーの Cookie をクリアする必要がある場合があります。
http-client.env.json ファイルで、認証構成名にキャレットを置き、 Alt+Enter (コンテキストアクションの表示) を押します。
ブラウザーの Cookie をクリア を選択します。
または、 HTTP クライアント認証ログ ツールウィンドウで をクリックして Cookie をクリアすることもできます。
アクセストークンの代わりに ID トークンを使用する
サーバーでアクセストークンの代わりに ID トークンの使用が必要な場合は、次のいずれかの方法で HTTP クライアントを構成してこれを実行できます:
認証構成では、
"Use ID Token": trueパラメーターを使用します。.http ファイルでは、
$auth.idToken変数 (例:Authorization: Bearer {{$auth.idToken("auth-id-1")}}) を使用します。
カスタム認証パラメーターを使用する
HTTP クライアントには、認可サーバーが必要とするカスタムリクエストパラメーターを定義するオプションが用意されています。 これには、たとえば、OAuth 2.0 認可フレームワークを拡張する resource や audience が含まれます。
認証構成に、
"Custom Request Parameters"オブジェクトを追加します。"Custom Request Parameters"内に、パラメーター名と値 (文字列または配列) を入力します。パラメーターの使用を特定のリクエストに制限する場合は、値をキーが 2 つあるオブジェクトとして定義します:
"Value"(パラメーター値)"Use"— パラメーターの使用スコープ。 次の 3 つの値のいずれかになります。"Use": "Everywhere"(いかなるリクエストでも)"Use": "In Auth Request"(認証リクエストのみ)"Use": "In Token Request"(トークンリクエストのみ)
例:
"auth-id-1": { "Type": "OAuth2", "Custom Request Parameters": { "audience": { "Value": "https://my-audience.com/", "Use": "In Token Request" }, "resource": [ "https://my-resource/resourceId1", "https://my-resource/resourceId2" ], "my-custom-parameter": "my-custom-value" }, }
HTTP クライアント認証ログ ツールウィンドウを使用して、リクエストで使用されるパラメーターとその値を表示します。
カスタムリクエストヘッダーを使用する
HTTP クライアントには、認可サーバーで必要となる可能性のあるカスタム要求ヘッダーを使用するオプションが用意されています。
認証構成に、
"Custom Request Headers"オブジェクトを追加します。"Custom Request Headers"内に、ヘッダー名とその値を入力します。Ctrl+Space を押すと、
Accept、Cookie、User-Agentなどの一般的なヘッダーの候補リストが表示されます。ヘッダーの使用を特定のリクエストに制限する場合は、値を 2 つのキーを持つオブジェクトとして定義します。
"Value"(ヘッダー値)"Use"— ヘッダーの使用スコープ。 次の 3 つの値のいずれかになります。"Use": "Everywhere"(いかなるリクエストでも)"Use": "In Auth Request"(認証リクエストのみ)"Use": "In Token Request"(トークンリクエストのみ)
例:
"auth-id-1": { "Type": "OAuth2", "Custom Request Headers": { "Accept": { "Use": "Everywhere", "Value": "application/javascript" }, "my-custom-header": "my-custom-value" }, }
認証構成パラメーター
- タイプ
認証タイプ。 可能な値:
"OAuth2": OAuth2 を使用してリクエストを認証します。"Mock"(開発またはテスト環境用):認証プロセスをエミュレートします ― OAuth2 サーバーによって提供されるアクセストークンの代わりに、WebStorm は認証構成からトークンを使用します。 アクセストークンとして使用する"Token"、および任意で ID トークンとして"ID Token"を指定します。 例:"my-auth-id": { "Type": "Mock", "Token": "my-token" }
- グラントタイプ
アクセストークンを取得するメソッドです。 利用可能な値:
"Authorization Code"、"Client Credentials"、"Device Authorization"、"Implicit"、"Password"。- 認証 URL
アプリケーションが認証コードを取得するためにクライアントリクエストをリダイレクトする認証 URL。 認可コードとインプリシットグラントタイプには
"Auth URL"が必要です。- トークン URL
プロバイダーの認証サーバーで、認証コードをアクセストークンに交換します。 認可コード、クライアント資格情報、デバイス認証、パスワード付与タイプには
"Token URL"が必要です。- リダイレクト URL
クライアントアプリケーションの コールバック URLで、認証後にリクエストがリダイレクトされます。 これはクライアントアプリケーションの設定から取得した URL でも、認可サーバーがどの URL も受け入れる場合は任意の URL でも構いません(例:
http://localhost:12345/foo/bar)。- クライアント ID
API プロバイダーに登録されているあなたのクライアントの公開識別子。 すべての グラントタイプにこのパラメーターが必要です。
- クライアントシークレット
クライアントアプリケーションが認証サーバーで認証するために使用する機密識別子。 クライアント資格情報 グラントタイプの場合、このパラメーターが必要です。
- クライアント資格情報
次のいずれかを入力します:
リクエストでクライアント資格情報を指定したくない場合は、
"none"リクエスト本文でクライアント資格情報を送信する場合は、
"in body""basic"は、要求ヘッダーで基本認証要求を送信します (デフォルト値)。
- デバイス認証 URL
クライアントデバイスがデバイスコードとユーザーコードを取得するためにリクエストする URL。
デバイス認証付与タイプに適用可能であり、必須です。
- 完全な URI を開く
trueに設定すると、ブラウザーがユーザーコード(verification_uri_complete )を含む検証 URI を開きます。 デフォルト値はfalseです。ブラウザーは検証 URI(ユーザーコード埋め込みなし)を開き、ユーザーが手動でコードを入力することを想定しています。デバイス認証付与タイプに適用可能です。
- ブラウザー後にポーリングを開始
trueに設定すると、クライアントデバイスはブラウザーが閉じられた後のみトークンエンドポイントへアクセストークンリクエスト(ポーリング)を送信する必要があります。 デフォルト値はfalseです。デバイスはユーザーの操作が完了するかコードの有効期限が切れるまでトークンエンドポイントを継続的にポーリングします。デバイス認証付与タイプに適用可能です。
- PKCE
コード交換のための証明キー (PKCE)(英語) を有効にします。 認可コード付与タイプに適用可能です。
デフォルトのアルゴリズム (自動生成されたコード検証の SHA-256 ハッシュ) を使用するには、
"PKCE": trueと入力します。 または、"Code Challenge Method"(プレーンまたは SHA-256) と"Code Verifier"を使用して動作をカスタマイズします。 例:"PKCE": { "Code Challenge Method": "Plain", "Code Verifier": "YYLzIBzrXpVaH5KRx86itubKLXHNGnJBPAogEwkhveM" },- スコープ
アプリケーションによるユーザーアカウントへのアクセス範囲を制限するためのスコープです。 利用可能な値はアクセスしようとしているサービスによって異なります。
- 自動取得
デフォルトでは、HTTP クライアントはリクエストを送信する前にアクセストークンを自動的にリフレッシュまたは取得します。 リクエストを送信する前にアクセストークンを自動的にリフレッシュまたは取得したくない場合は、「
"Acquire Automatically": false」と入力します。 手動でリフレッシュまたは取得できます。- ユーザー名
パスワードグラントタイプで使用される、認証の一部として送信されるユーザー名です。
- パスワード
パスワードグラントタイプで使用される、認証の一部として送信されるユーザーパスワードです。 パスワードを共有しないようにするには、値の代わりに プライベート変数を使用できます。例えば、
"Password": "{{password}}"。- カスタムリクエストパラメーター
カスタムリクエストパラメーターを指定する
- カスタムリクエストヘッダー
カスタムリクエストヘッダーを指定する