Snowflake OAuth セキュリティ統合の1回使用の更新トークン

このトピックでは、:doc:` Snowflake OAuth セキュリティ統合 </user-guide/oauth-snowflake-overview>` の単一使用の更新トークンを有効にする方法について説明します。

1回限りのリフレッシュトークンは、盗難されたリフレッシュトークンがSnowflakeアカウントで再利用されるのを防ぐために有効にできる機能です。1回使用のリフレッシュトークンを有効にすると、リフレッシュトークン付与フローの動作に以下の変更が加えられます。

  • 更新トークンの有効期間90日間の間に更新トークンを使用できるのは1回のみです。

  • 更新トークンを使用すると、更新トークンは無効になります。

  • リフレッシュトークン付与フローは、新しいアクセストークンだけではなく、新しいリフレッシュトークンと新しいアクセストークンを返します。

  • 新しい更新トークンを取得すると、以前の更新トークンとアクセストークンはすべて無効になります。

1回使用のリフレッシュトークンの利点

1回限りの更新トークンには、次のセキュリティ上の利点があります。

  • 有効トークン期間の短縮:正規アプリケーションがリフレッシュトークンを使用すると、リフレッシュトークンの盗難されたコピーはすべて無効になります。この1回限りの動作により、盗難されたトークンの配布と、期限切れ攻撃での盗難トークンの使用がより困難になります。

    たとえば、アプリケーションが10分ごとに 更新トークン付与フローを1回使用する場合、悪意のある攻撃者が更新トークンを盗んでも、そのトークンの有効期限が 90 日であっても、アプリケーションが新しいリフレッシュトークンを取得するまでの 10 分以内しか使用できません。

  • 侵入検知:更新トークンは再利用できません。更新トークンが再利用されると、以前のすべての更新トークンとアクセストークンは無効になります。

    たとえば、悪意のある攻撃者が1回限りの使用の更新トークンを盗み、それを再利用しようとすると、その試みによってすべての過去の更新トークンとアクセストークンが無効化され、更新トークンの不正使用が明らかになります。

1回使用のリフレッシュトークンの有効化

認証コード付与フローを使用して、アクセストークンとリフレッシュトークンの認証コードを交換すると、リフレッシュトークンのローテーションを有効にすることができます。

次のいずれかの方法を使用して、1回使用の更新トークンを有効にできます。

HTTP リクエストの本文でリクエストパラメーターを使用する

クライアントアプリケーションは認証コード付与フロー中の間に、 Snowflake OAuth</user-guide/oauth-snowflake-overview>`用のトークンリクエストエンドポイントへのHTTPPOST リクエストの本文で``enable_single_use_refresh_tokens` リクエストパラメーターを TRUE に設定できます。

クライアントアプリケーションが認証コード付与フロー中に enable_single_use_refresh_tokens リクエストパラメーター を``TRUE`` に設定した後、以降のすべての更新トークン付与フローが新しい更新トークンと新しいアクセストークンを返し、以前のすべてのアクセストークンと更新トークンを無効にします。

たとえば、以下の HTTPPOST リクエストを送信して**認証コードグラントフロー** を実行し、enable_single_use_refresh_tokens へのリクエストパラメーターを TRUE に設定することで、最初のアクセストークンと更新トークンを取得できます。

POST /oauth/token-request HTTP/1.1
Host: <my_subdomain>.snowflakecomputing.com
Authorization: Basic <client_id:client_secret>
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ12345&redirect_uri=http://127.0.0.1:8080&enable_single_use_refresh_tokens=true
Copy

次を実行できます。 HTTPPOST 古い更新トークンを使用して、更新トークン付与フロー を実行し、新しいアクセストークンと新しい更新トークンを取得するようリクエストします。

POST /oauth/token-request HTTP/1.1
Host: <my_subdomain>.snowflakecomputing.com
Authorization: Basic <client_id:client_secret>
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&refresh_token=<your_old_refresh_token>
Copy

Snowflake OAuth セキュリティ統合でプロパティを設定する

クライアントアプリケーションが各更新トークン付与フローの後にキャッシュされた更新トークンを更新する場合は、Snowflake OAuth セキュリティ統合 に対して、 OAUTH_SINGLE_USE_REFRESH_TOKENS_REQUIRED プロパティを TRUE に設定することによって、単一使用の更新トークンを有効にできます。

Snowflake OAuth セキュリティ統合に対して、単一使用の更新トークンを有効にした後 、すべての認証コード付与フロー、および を使用する更新トークン付与フロー client_id クライアントアプリケーションが認証コード付与フロー中の enable_single_use_refresh_tokens リクエストパラメーターを指定するかどうかに関係なく、単一使用の更新トークンを発行します。

たとえば、SnowflakeOAuth セキュリティ統合に対して単一使用の更新トークンを有効にするには、ALTERSECURITYINTEGRATION を使用できます。

ALTER SECURITY INTEGRATION my_integration
  SET OAUTH_SINGLE_USE_REFRESH_TOKENS_REQUIRED = TRUE;
Copy