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

このようなリクエストを実行すると、 サービス ツールウィンドウで 認証ログの表示 ボタンが使用できるようになります。 リダイレクトページ、アクセストークン、その他の認証の詳細を表示できます。
アクセストークンを手動で取得する
HTTP リクエストで認証構成を参照すると、HTTP クライアントは、保護されたリソースにアクセスする前にアクセストークンを自動的に取得 (またはリフレッシュ) します。 保護されたリソースに実際のリクエストを送信せずにアクセストークンを取得したい場合は、アクセストークンを手動で取得できます。
http-client.env.json ファイルで、認証構成名の横にある
をクリックします。
認証構成に プライベート変数が含まれている場合は、表示されるポップアップでプライベート環境ファイルを選択します。
プロンプトが表示されたら、認証プロセスを完了します。
認証が正常に完了すると、DataGrip がアクセストークンを取得します。 すでにアクセストークンがあり、それが期限切れの場合、DataGrip がリフレッシュします。
新しいアクセストークンを取得する
トークンをリフレッシュする以外に、再認証、つまり最初のアクセス トークンを取得した元のフローを繰り返すことで、新しいトークンを取得できます。
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 Client を構成できます:
認証構成では、
"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 つのキーを持つオブジェクトとして定義します:
"値"(パラメーター値)"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 を押すと、
受諾、Cookie、User-Agentなどの一般的なヘッダーの候補リストが表示されます。ヘッダーの使用を特定のリクエストに制限する場合は、値を 2 つのキーを持つオブジェクトとして定義します。
"値"(ヘッダー値)"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 サーバーから提供されるアクセス トークンの代わりに、DataGrip が認証構成のトークンを利用します。 アクセストークンとして利用する"トークン"を指定し、必要に応じて ID トークン用の"ID Token"も指定します。 例:"my-auth-id": { "Type": "Mock", "Token": "my-token" }
- 認可グラントタイプ
アクセストークンを取得するメソッドです。 利用可能な値:
"Authorization Code"、"Client Credentials"、"Device Authorization"、"暗黙的"、および"パスワード"。- 認可 URL
アプリケーションがクライアントリクエストを認可コード取得のためにリダイレクトする認可 URL。 認可コードおよびインプリシットグラントタイプには、
"Auth URL"が必要です。- トークン URL
プロバイダーの認証サーバーで、認可コードをアクセストークンに交換します。 認可コード、クライアント資格情報、デバイス認証、およびパスワードグラントタイプには、
"Token URL"が必要です。- リダイレクト URL
認証後にリクエストがリダイレクトされる、クライアントアプリケーションの コールバック URL。 これはクライアントアプリケーション設定の URL、もしくは認証サーバーが任意の URL を許可する場合は例えば
http://localhost:12345/foo/barなどの任意の URL でも構いません。- クライアント ID
API プロバイダーに登録されているクライアントの公開識別子です。 このパラメーターはすべての グラントタイプで必須です。
- クライアントシークレット
クライアントアプリケーションが認証サーバーに認証するための機密識別子です。 このパラメーターはクライアント資格情報 グラントタイプで必須です。
- クライアント資格情報
次のいずれかを入力してください:
リクエストでクライアント資格情報を指定したくない場合は、
"none"リクエスト本文でクライアント資格情報を送信する場合は、
"in body""basic"は、要求ヘッダーで基本認証要求を送信します (デフォルト値)。
- デバイス認証 URL
クライアントデバイスがデバイスコードやユーザーコードを取得するためにリクエストを送る URL です。
デバイス認証グラントタイプで必須かつ該当します。
- 完全な URI を開く
trueに設定すると、ブラウザーでユーザーコード(verification_uri_complete )を含む検証 URI が開かれます。 デフォルト値はfalseです:ブラウザーで検証 URI(ユーザーコードは含まれません)が開き、通常ユーザーが手動でコードを入力します。デバイス認証グラントタイプに該当します。
- ブラウザー後にポーリング開始
trueに設定した場合、クライアントデバイスはブラウザーが閉じられた後のみトークンエンドポイントにアクセストークンリクエスト(ポーリング)を送信します。 デフォルト値はfalseです。デバイスはユーザーの操作完了またはコードの有効期限までトークンエンドポイントに継続的にポーリングします。デバイス認証グラントタイプに該当します。
- PKCE/ピクシー(Proof Key for Code Exchange)
コード交換のための証明キー (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}}"等が利用できます。- カスタムリクエストパラメーター
- カスタムリクエストヘッダー