Freshchat은 JSON Web Token(JWT)을 통해 사용자 인증을 관리할 수 있도록 합니다. JWT 사용자 인증을 통해 인증된 사용자만 구성된 웹 위젯을 통해 대화를 시작할 수 있습니다. 이 문서에서는 Freshchat 웹 채팅 위젯에 대한 JWT 사용자 인증 정보를 제공합니다. 문서에는 다음 내용이 포함되어 있습니다:
- 개요
- 사용자 인증 강제
- JWT 토큰 생성
- 헤더
- 페이로드
- 서명
- 웹 채팅 위젯에 JWT 토큰 포함
- 에이전트 경험
개요
웹 채팅 위젯에 사용자 인증을 강제하면 로그인한 사용자와 익명 사용자 모두에게 JWT 토큰 인증이 필수적입니다. 이는 등록된 사용자나 방문자 모두의 상호작용이 토큰 검증을 통해 보안되도록 보장합니다.
웹 채팅 위젯을 위한 JWT 사용자 인증 워크플로우
- 대화 시작: 사용자가 채팅 위젯을 클릭하여 대화를 시작합니다.
- 토큰 요청: Freshchat이 사용자 데이터를 포함한 서명된 JWT 토큰을 요청합니다.
- 채팅 초기화: Freshchat이 JWT 토큰을 전달하여 채팅 세션을 초기화합니다.
- 토큰 검증: Freshchat이 JWT 페이로드에서 사용자 세부 정보를 수신하고 사용자에게 채팅 세션에 대한 액세스를 부여합니다.
사용자 인증 강제
참고: JWT 사용자 인증이 구성되고 활성화되면 방문자와 식별된 사용자 모두에게 필수적입니다. 이는 익명 방문자나 인증된 사용자 모두의 상호작용이 안전한 토큰 검증을 요구하도록 보장합니다.
- 관리자로 계정에 로그인합니다.
- 관리 설정 > 채널 > 웹 채팅으로 이동합니다. 사용자 인증 탭을 클릭합니다.
암호화 키 추가
- 키 생성을 클릭하여 새 암호화 키를 생성합니다. 이는 일회성 프로세스입니다.
- 암호화 키를 복사하여 저장합니다. 사용자 인증을 활성화한 후 JWT 토큰을 생성하는 데 필요합니다. 참고: 생성된 키는 계정의 모든 구성된 위젯에 대해 유효하고 동일합니다.
사용자 인증 강제: JWT 사용자 인증을 활성화하려면 옵션을 전환합니다. 확인 팝업이 나타납니다. 강제를 클릭하여 확인합니다.
JWT 인증이 강제되면 웹 위젯을 사용하는 모든 사용자에게 JWT 토큰 전달이 필수적입니다. 사용자 인증이 활성 상태임을 확인할 수 있습니다.
언제든지 JWT 사용자 인증을 비활성화할 수 있습니다. 사용자 인증을 비활성화하려면 토글을 클릭한 다음 나타나는 팝업에서 비활성화를 클릭합니다. 비활성화되면 "활성" 레이블이 사라지고 암호화된 키 섹션 아래에 초안 도움말 텍스트가 다시 나타납니다.
참고: 이 작업은 모든 웹 채팅 위젯에 대한 사용자 인증을 비활성화합니다.
JWT 토큰 생성
JWT는 당사자 간의 정보를 안전하게 전송하기 위해 사용되는 URL 안전 토큰인 공개 표준(RFC 7519)입니다. 예를 들어, 사용자 인증을 강제한 후에는 사용자가 웹 채팅 위젯을 통해 대화를 시작할 때마다 JWT 토큰이 필요합니다.
참고: JWT 토큰을 수동으로 생성할 필요는 없습니다. Node.js, Ruby 또는 Python과 같은 언어로 사용할 수 있는 JWT 라이브러리를 사용할 수 있습니다. 또는 jwt.io를 사용하여 웹 기반 양식을 통해 토큰을 생성할 수 있습니다. 그러나 JWT 토큰을 타사 사이트에 노출하지 않는 것이 좋습니다.
JWT 토큰 생성에 대해 확신이 없다면 엔지니어링 또는 지원 팀에 도움을 요청하십시오.
JWT 토큰의 구성 요소
JWT는 세 가지 주요 부분으로 구성됩니다:
- 헤더
- 페이로드
- 서명
헤더
토큰의 유형과 사용된 서명 알고리즘을 지정합니다. 두 가지 필드를 포함합니다:
- alg: 토큰 서명에 사용된 알고리즘입니다. 예를 들어, Freshchat의 경우 HS256입니다.
- typ: 토큰의 유형으로, JWT입니다.
예시:
{
"alg": "HS256",
"typ": "JWT"
}
페이로드
전송하려는 클레임 또는 데이터를 포함합니다. 다음은 first_name, last_name, phone_number, exp(만료 시간), reference_id 및 freshchat_uuid가 포함된 예시 페이로드입니다.
참고: Freshchat 웹 채팅 위젯에서 사용자를 인증하려면 유일하게 필요한 매개변수는 사용자를 고유하게 식별하는 freshchat_uuid입니다.
{
"first_name": "John",
"last_name": "Doe",
"phone_number": "+1234567890",
"exp": 1716239022,
"reference_id": "ref-123456",
"freshcat_uuid": "uuid-123456-abcdef"
}
- first_name (선택 사항): 사용자의 이름(예: "John")으로, 페이로드에 사용자별 정보를 포함하는 데 사용됩니다.
- last_name (선택 사항): 사용자의 성(예: "Doe")으로, 사용자 식별에도 사용됩니다.
- phone_number (선택 사항): 사용자의 전화번호(예: "+1234567890")를 저장하며, 연락 목적이나 사용자 식별을 용이하게 하는 데 사용될 수 있습니다.
- exp (선택 사항): Unix 타임스탬프로 표현된 토큰의 만료 시간을 정의합니다(예: 1716239022). 이 타임스탬프는 JWT의 유효 기간을 제한하여 적시 토큰 갱신을 강제함으로써 보안을 강화합니다.
- reference_id (필수): 시스템 내에서 사용자를 고유하게 식별하는 식별자(예: "ref-123456")입니다. 이 ID는 플랫폼 간에 사용자를 정확하게 인식하고 추적하는 데 필수적입니다.
- freshcat_uuid (필수): 애플리케이션 컨텍스트에서 사용자 또는 세션을 고유하게 식별하는 식별자(예: "uuid-123456-abcdef")입니다. 내부적으로 개별 엔터티나 세션을 구분하여 정확한 사용자 관리 및 추적을 가능하게 합니다.
서명
토큰이 변경되지 않았음을 보장합니다. 인코딩된 헤더, 페이로드 및 공유 비밀을 지정된 알고리즘으로 결합하여 생성됩니다. 계정의 공유 비밀은 사용자 인증 탭에서 찾을 수 있습니다.
최종 JWT 토큰은 인코딩된 헤더, 페이로드 및 서명을 결합하여 점(.)으로 연결하여 생성됩니다.
JWT 토큰 = header.payload.signature
웹 채팅 위젯에 JWT 토큰 포함
JWT 사용자 인증을 강제한 후에는 JWT 인증을 사용하여 웹 채팅 위젯을 시작하는 다음 스크립트를 포함합니다.