키 페어 인증: 문제 해결¶
이 항목은 키 페어 인증 을 사용하여 Snowflake에 연결할 때 발생하는 오류를 해결하는 데 도움이 됩니다. 이 항목에서는 JWT token is invalid
가 포함된 오류에 중점을 둡니다.
오류 찾기¶
문제를 해결하기 전에 문제로 인해 JWT token is invalid
오류가 발생하는지 확인해야 합니다.
Snowflake 클라이언트가 대화형 인터페이스가 없는 드라이버 또는 커넥터인 경우 로그를 사용하여 연결 오류를 검사합니다.
Snowflake 커넥터 또는 드라이버에 대한 로깅을 활성화합니다. 자세한 내용은 Snowflake 드라이버 및 커넥터용 로그 파일 생성하기 (Snowflake 기술 자료 문서)를 참조하십시오.
JWT token is invalid
문자열이 포함된 오류 여부를 확인하십시오.예를 들어 Snowflake JDBC 드라이버를 사용하는 클라이언트는 키 페어 인증을 사용하려고 할 때 다음 오류가 발생할 수 있습니다.
yyyy-mm-dd hh:mm:ss.nnn n.s.c.jdbc.SnowflakeSQLException FINE <init>:40 - Snowflake exception: JWT token is invalid. [0ce9eb56-821d-4ca9-a774-04ae89a0cf5a], sqlState:08001, vendorCode:390,144, queryId:
추가 세부 정보 검색하기¶
각 JWT token is invalid
오류에는 오류 바로 뒤 괄호 안에 표시되는 UUID가 포함됩니다(예: JWT token is invalid. [0ce9eb56-821d-4ca9-a774-04ae89a0cf5a]
). 오류에 대한 추가 정보를 얻을 수 있도록 Snowflake 관리자에게 오류의 UUID를 제공해야 합니다.
관리자는 SYSTEM$GET_LOGIN_FAILURE_DETAILS 함수를 사용하여 오류에 대한 추가 세부 정보를 얻습니다. 예를 들어, JWT token is invalid. [0ce9eb56-821d-4ca9-a774-04ae89a0cf5a]
오류에 대한 추가 정보를 얻으려면 ACCOUNTADIMN 역할을 가진 사용자가 다음을 실행할 수 있습니다.
SELECT JSON_EXTRACT_PATH_TEXT(SYSTEM$GET_LOGIN_FAILURE_DETAILS('0ce9eb56-821d-4ca9-a774-04ae89a0cf5a'), 'errorCode');
JSON_EXTRACT_PATH_TEXT 함수는 SYSTEM$GET_LOGIN_FAILURE_DETAILS 함수의 JSON 출력을 구문 분석하여 오류 코드와 오류를 검색합니다.
오류 목록¶
SYSTEM$GET_LOGIN_FAILURE_DETAILS 함수의 출력은 다음 오류 코드/오류 조합 중 하나입니다.
오류 코드 |
오류 |
설명 |
---|---|---|
390144 |
JWT_TOKEN_INVALID |
JWT 토큰에 일반적인 문제가 있습니다. 가능한 해결 방법은 일반적인 오류 및 해결 방법 섹션을 참조하십시오. |
394300 |
JWT_TOKEN_INVALID_USER_IN_ISSUER |
발급자에 지정된 사용자 이름이 Snowflake 계정에 존재하지 않습니다. 가능한 해결 방법은 일반적인 오류 및 해결 방법 섹션을 참조하십시오. |
394301 |
JWT_TOKEN_MISSING_ISSUE_OR_EXPIRATION_TIME |
JWT 토큰에는 발행 시간이나 만료 시간이 포함되지 않습니다. |
394302 |
JWT_TOKEN_INVALID_ISSUE_TIME |
발급 시간으로부터 60초 이상 지난 후 Snowflake에서 JWT 토큰을 수신했습니다. 가능한 해결 방법은 일반적인 오류 및 해결 방법 섹션을 참조하십시오. |
394303 |
JWT_TOKEN_INVALID_EXPIRATION_TIME |
JWT 토큰이 만료되었습니다. |
394304 |
JWT_TOKEN_INVALID_PUBLIC_KEY_FINGERPRINT_MISMATCH |
발급자에 지정된 공개 키 지문과 Snowflake에서 사용자에 대해 저장된 지문이 일치하지 않습니다. 가능한 해결 방법은 일반적인 오류 및 해결 방법 섹션을 참조하십시오. |
394305 |
JWT_TOKEN_INVALID_ALGORITHM |
JWT 토큰이 RS256 알고리즘으로 서명되지 않았습니다. |
394306 |
JWT_TOKEN_INVALID_SIGNATURE |
Snowflake가 JWT 토큰에서 제공한 서명을 확인할 수 없습니다. 제공된 공개 키와 쌍을 이루지 않는 비공개 키로 JWT가 서명되었을 가능성이 있습니다. JWT 서명이 손상되었거나 수정되었을 수도 있습니다. |
일반적인 오류 및 해결 방법¶
키 페어 인증과 관련된 가장 일반적인 오류는 다음과 같습니다.
다음 설명과 해결 방법에 따라 이러한 오류를 해결하십시오.
JWT_TOKEN_INVALID¶
- 설명:
JWT 토큰에 일반적인 문제가 있습니다.
- 해결책 #1:
토큰 자체의 형식이 잘못되었을 수 있습니다. Snowflake에 액세스하는 애플리케이션이 유효한 JWT 토큰을 생성하고 있는지 다시 확인하십시오.
- 해결책 #2:
클라이언트(드라이버, 커넥터 또는 요청 URL)가 올바른 계정 식별자 를 사용하여 Snowflake 계정에 연결하고 있는지 다시 확인하십시오. 또한 이 값이
iss
클레임의 계정 식별자와 일치하는지도 확인해야 합니다.- 해결책 #3:
sub
클레임의 계정 식별자와 사용자 이름이iss
클레임의 해당 값과 일치하는지 다시 확인하십시오.- 해결책 #4:
iss
클레임이SHA256
을 서명 알고리즘으로 지정하는지 다시 확인하십시오.
JWT_TOKEN_INVALID_PUBLIC_KEY_FINGERPRINT_MISMATCH¶
- 설명:
발급자에 지정된 공개 키 지문과 Snowflake에서 사용자에 대해 저장된 지문이 일치하지 않습니다.
- 해결책:
JWT 토큰의 공개 키 지문을 얻은 다음, 이를 Snowflake의 사용자와 연결된 지문과 비교합니다.
JWT 토큰의 지문을 얻는 한 가지 방법은 드라이버에 대한 DEBUG 로깅을 활성화하고 로그인을 시도하는 것입니다.
SHA256:<hash>
패턴을 찾으십시오. 여기서<hash>
는 공개 키 지문입니다.Snowflake에서 사용자와 연결된 공개 키 지문을 얻으려면 DESCRIBE USER 명령을 실행하십시오. 공개 키 지문은 RSA_PUBLIC_KEY_FP 또는 RSA_PUBLIC_KEY_2_FP 속성에 있습니다. 사용자에게 공개 키 지문이 누락된 경우 ALTER USER 명령을 실행하여 이러한 속성을 설정합니다.
JWT_TOKEN_INVALID_USER_IN_ISSUER¶
- 설명:
발급자에 지정된 사용자 이름이 Snowflake 계정에 존재하지 않습니다.
- 해결책:
Snowflake 클라이언트에 구성된 사용자 이름은 Snowflake 사용자의
NAME
이 아닌LOGIN_NAME
과 일치해야 합니다. 때로는 이러한 값이 다릅니다.DESCRIBE USER 명령을 실행하고
LOGIN_NAME
속성 값이 Snowflake 클라이언트가 연결에 사용하는 사용자 이름과 일치하는지 확인합니다.
JWT_TOKEN_INVALID_ISSUE_TIME¶
- 설명:
발급 시간으로부터 60초 이상 지난 후 Snowflake에서 JWT 토큰을 수신했습니다.
- 해결책 #1:
드라이버가 실행 중인 호스트를 확인하여 NTP와 동기화되고 클록 스큐가 없도록 하십시오. 서버 시계가 왜곡된 경우 실제로는 그렇지 않지만 Snowflake가 현재 시간이 토큰 발급 시간 후로 60초 이상 늦었다고 판단할 수 있습니다. 예를 들어 클라이언트 컴퓨터가 30초 늦고 토큰이 Snowflake에 연결하는 데 45초 걸린 경우, Snowflake는 45초가 아니라 JWT 토큰이 발급된 지 75초가 지났다고 판단합니다.
클라이언트 컴퓨터의 시계를 NTP 서버와 비교하여 정확한지 확인할 수 있습니다. 예를 들어 NIST 인터넷 시간 서버 를 사용하여 클라이언트 컴퓨터를 동기화할 수 있습니다. 호스트 시계를 확인하고 NTP 서버와 동기화하는 데 도움이 필요하면 운영 체제의 관리자 가이드를 참조하거나 시스템 관리자에게 문의하십시오.
- 해결책 #2:
OS 관련 모니터링 도구를 사용하여 CPU/디스크 사용량이 과도할 때 오류가 발생하는지 확인하십시오.
- 해결책 #3:
토큰 발급 시간 이후 네트워크 대기 시간이 과도하여 60초 이상 Snowflake에서 JWT 토큰을 처리하게 되는지 확인하십시오.
연결 진단 도구를 사용하여 네트워크 대기 시간을 측정할 경우 대상을
account_identifier.snowflakecomputing.com
으로 설정하십시오. 예를 들어 Snowflake 클라이언트가myorg-account1
을 계정 식별자로 사용하는 경우 대상을myorg-account1.snowflakecomputing.com
으로 설정합니다.