Snowflake OAuth 보안 통합을 위한 일회용 새로 고침 토큰

이 항목에서는 :doc:`Snowflake OAuth 보안 통합</user-guide/oauth-snowflake-overview>`에 대한 일회용 새로 고침 토큰을 활성화하는 방법에 대해 설명합니다.

일회용 새로 고침 토큰은 도난당한 새로 고침 토큰이 Snowflake 계정에서 재사용되는 것을 방지하기 위해 활성화할 수 있는 기능입니다. 일회용 새로 고침 토큰을 활성화하면 새로 고침 토큰 부여 흐름의 동작이 다음과 같이 변경됩니다.

  • 새로 고침 토큰은 새로 고침 토큰이 유효한 90일 동안 한 번만 사용할 수 있습니다.

  • 새로 고침 토큰을 사용한 후에는 새로 고침 토큰이 무효화됩니다.

  • 새로 고침 토큰 부여 흐름은 새 액세스 토큰만 반환하는 대신 새 새로 고침 토큰과 새 액세스 토큰을 반환합니다.

  • 새 새로 고침 토큰을 받으면 이전의 모든 새로 고침 토큰과 액세스 토큰이 무효화됩니다.

일회용 새로 고침 토큰의 이점

일회용 새로 고침 토큰은 다음과 같은 보안 이점을 제공합니다.

  • 유효 토큰 수명 단축: 정상적인 애플리케이션에서 새로 고침 토큰을 사용하면 도난된 새로 고침 토큰의 복사본이 모두 무효화됩니다. 이러한 일회성 동작으로 인해 도난된 토큰을 배포하고 시간 제한 공격에서 도난된 토큰을 사용하기가 더 어려워집니다.

    예를 들어, 애플리케이션이 10분마다 한 번씩 새로 고침 토큰 부여 흐름을 사용하는 경우 새로 고침 토큰을 훔친 악의적인 공격자는 해당 토큰이 90일 동안 유효하더라도 10분 이내 또는 애플리케이션이 새 새로 고침 토큰을 받기 전까지만 도난된 토큰을 사용할 수 있습니다.

  • 침입 감지: 새로 고침 토큰을 재사용할 수 없습니다. 새로 고침 토큰을 재사용하면 이전의 모든 새로 고침 토큰과 액세스 토큰이 무효화됩니다.

    예를 들어, 악의적인 행위자가 일회용 새로 고침 토큰을 훔치고 토큰을 재사용하려는 경우, 일회용 새로 고침 토큰을 재사용하려는 시도로 인해 이전의 모든 새로 고침 토큰과 액세스 토큰이 무효화되어 새로 고침 토큰의 악의적인 사용이 노출됩니다.

일회용 새로 고침 토큰 활성화하기

인증 코드 부여 흐름을 사용하여 액세스 토큰과 새로 고침 토큰에 대한 인증 코드를 교환할 때 새로 고침 토큰 순환을 활성화할 수 있습니다.

다음 방법 중 하나를 사용하여 일회용 새로 고침 토큰을 활성화할 수 있습니다.

HTTP 요청의 본문에서 요청 매개 변수 사용

클라이언트 애플리케이션은 인증 코드 부여 흐름 중에 Snowflake OAuth</user-guide/oauth-snowflake-overview>`의 토큰 요청 엔드포인트에 대한 HTTP POST 요청 본문에서 ``enable_single_use_refresh_tokens` 요청 매개 변수를 ``TRUE``로 설정할 수 있습니다.

클라이언트 애플리케이션이 인증 코드 부여 흐름 중에 enable_single_use_refresh_tokens 요청 매개 변수를 ``TRUE``로 설정하면 이후의 모든 새로 고침 토큰 부여 흐름은 새로운 새로 고침 토큰과 새로운 액세스 토큰을 반환하고 이전의 모든 액세스 토큰과 새로 고침 토큰을 무효화합니다.

예를 들어, 다음 HTTP POST 요청을 만들어 **인증 코드 부여 흐름**을 수행하고 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

그런 후 다음의 HTTP POST 요청을 만들어 이전 새로 고침 토큰을 통해 **새로 고침 토큰 부여 흐름**을 수행하여 새로운 액세스 토큰과 새로운 새로 고침 토큰을 가져옵니다.

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 보안 통합에서 속성 설정하기

각 새로 고침 토큰 부여 흐름 후 클라이언트 애플리케이션이 캐시된 새로 고침 토큰을 업데이트하는 경우 OAUTH_SINGLE_USE_REFRESH_TOKENS_REQUIRED 속성을 ``TRUE``로 설정하여 :doc:`Snowflake OAuth 보안 통합</user-guide/oauth-snowflake-overview>`에 대한 일회용 새로 고침 토큰을 활성화할 수 있습니다.

Snowflake OAuth 보안 통합에 대해 일회용 새로 고침 토큰을 활성화한 후 보안 통합의 client_id``를 사용하는 모든 인증 코드 부여 흐름 새로 고침 토큰 부여 흐름은 인증 코드 부여 흐름 중에 클라이언트 애플리케이션이 ``enable_single_use_refresh_tokens 요청 매개 변수를 지정하는지 여부에 관계없이 일회용 새로 고침 토큰을 발급합니다.

예를 들어, :doc:`ALTER SECURITY INTEGRATION</sql-reference/sql/alter-security-integration-oauth-snowflake>`을 사용하여 Snowflake OAuth 보안 통합에 대한 일회용 새로 고침 토큰을 활성화할 수 있습니다.

ALTER SECURITY INTEGRATION my_integration
  SET OAUTH_SINGLE_USE_REFRESH_TOKENS_REQUIRED = TRUE;
Copy