웹 대화에서 사용자 인증
웹 대화 보안을 사용하면 사용자 ID로 고객을 안전하게 인증할 수 있습니다.
웹 대화 통합의 기본 동작은 어시스턴트에 각 메시지의 일부로 전송되는 user_id 특성의 값을 설정하여 고유 사용자를 식별하는 것입니다. 자세한 정보는 웹 대화에서 사용자 ID 정보 관리 를 참조하십시오.
이 방법은 청구 목적으로 고유 사용자를 추적하는 데 충분하지만 안전하지 않으며 액세스 제어에 사용되지 않아야 합니다. 웹 대화 보안을 사용하는 경우 JWT (JSON Web Token) 를 사용하여 사용자를 안전하게 인증하고 권한 부여가 필요한 어시스턴트의 기능에 대한 액세스를 제어하십시오.
sub 청구를 사용하여 인증
사용자 인증에 이 방법을 사용하려면 먼저 웹 대화 보안 기능을 사용으로 설정해야 합니다. 자세한 정보는 웹 대화 보안 사용 을 참조하십시오.
웹 대화를 위한 JWT를 작성할 때 사용자를 식별하는 sub (주제) 청구의 값을 지정해야 합니다. 익명 사용자의 경우 생성된 고유 ID를 사용할 수 있습니다.
익명 사용자의 사용자 ID를 생성할 때 동일한 고객에 대해 여러 번 청구되지 않도록 쿠키에 생성된 ID를 저장해야 합니다.
웹 대화 통합이 이 JWT로 서명된 메시지를 수신하면 sub 청구의 사용자 ID를 조치의 system_integrations.channel.private.user.id 및 대화 상자의 integrations.channel.private.user.id 로 저장합니다. 자세한 정보는 통합 변수 를 참조하십시오.
고객이 웹 대화 세션을 시작하기 전에 로그인해야 하는 경우 JWT를 작성할 때 sub 청구의 값으로 인증된 사용자 ID를 사용할 수 있습니다. 웹 대화 통합이 JWT의 유효성을 검증하고 sub 청구를 사용하여 사용자 ID를 설정하기 때문에 어시스턴트는 이제 권한이 필요한 기능에 대한 보안 액세스 제어를 위해 대화 상자의 integrations.channel.private.user.id 및 조치에서 system_integrations.channel.private.user.id 에 의존할 수 있습니다.
웹 대화를 위해 JWT를 지정한 후에는 세션 중에 다른 sub 청구가 있는 JWT로 변경할 수 없습니다. 세션 중에 인증된 로그인 정보를 추가해야 하는 경우 대신 사용자 페이로드의 일부로 저장할 수 있습니다. 이를 수행하는 방법에 대한 예제는 학습서: 세션 중에 사용자 인증 을 참조하십시오.
청구 및 개인정보 보호정책
사용자 기반 요금제의 경우 사용자 ID는 청구 목적으로 사용됩니다. (웹 대화 보안이 사용 가능한 경우 updateUserID() 인스턴스 메소드를 사용하여 사용자 ID를 설정할 수 없습니다.) 동일한 사용자 ID가 고객 ID로도 사용되며, 이는 사용자 데이터를 삭제하기 위한 요청을 작성하는 데 사용될 수 있습니다. 고객 ID가 헤더 필드에서 전송되기 때문에 사용자가 지정하는 ID는 RFC 7230에 정의된 헤더 필드의 요구사항을 충족해야 합니다.
GDPR 요구사항을 준수해야 하는 경우, 특히 나중에 사용자 신임 정보를 사용하여 로그인하는 익명 사용자의 경우 생성된 익명 사용자 ID를 지속적으로 저장해야 할 수 있습니다. 이러한 사용자 ID를 저장하면 나중에 개인 고객과 연관된 모든 데이터를 삭제하도록 요청된 경우 이를 삭제할 수 있습니다.
사용자 기반 비용 청구에 대한 자세한 정보는 설명된 사용자 기반 플랜 을 참조하십시오. 사용자 데이터 삭제에 대한 자세한 정보는 데이터 레이블 지정 및 삭제 를 참조하십시오.
로그아웃
고객을 로그아웃하려면 웹 대화를 삭제해야 합니다.
고객이 로그아웃할 때 페이지를 다시 로드하는 경우 destroySession() 인스턴스 메소드를 호출하여 브라우저의 쿠키 및 스토리지에서
현재 세션에 대한 참조를 제거하십시오. 이 메서드를 호출하지 않으면 JWT로 보호되는 정보는 위험하지 않지만 웹 채팅이 이전 세션에 연결을 시도하다가 실패합니다.
고객이 로그아웃할 때 전체 페이지 다시 로드를 수행하지 않는 경우 destroy() 인스턴스 메소드를 호출하십시오. destroy 메서드는 현재 userID 대해 구성된 웹 채팅의 현재 인스턴스를 DOM 및 브라우저 메모리에서 제거합니다. 그런 다음 destroySession() 인스턴스 메소드를 호출하십시오.