시작
Kore.ai 대화형 플랫폼
챗봇 개요
자연어 처리(NLP)
봇 개념 및 용어들
빠른 시작 가이드
봇 빌더 접근 방법
사용 고지 사항 (영어)
Kore.ai 봇 빌더로 작업하기
봇 구축 시작하기
릴리스 정보
현재 버전 (영어)
이전 버전 (영어)

개념
디자인
스토리보드
대화 작업
개요
Using the Dialog Builder Tool
노드 유형
사용자 의도 노드
대화 노드
엔티티 노드
양식 노드
확인 노드
서비스 노드
봇 조치 노드
Service Node
WebHook 노드
스크립트 노드
노드 그룹화하기
Agent Transfer Node
사용자 프롬프트
음성 통화 속성
대화 관리
노드 및 전환
구성 요소 전환
컨텍스트 개체
이벤트 기반 봇 조치
지식 그래프
소개
지식 추출
지식 그래프 생성
봇에 지식 그래프 추가
그래프 생성
지식 그래프 작성
FAQ 추가
작업 실행
기존 소스에서 FAQ 구축
특성, 동의어 및 불용어
변수 네임스페이스 관리
수정
용어 편집 및 삭제
용어 편집 및 삭제
질문과 응답 편집
Knowledge Graph Training
지식 그래프 분석
봇 온톨로지 가져오기 및 내보내기
지식 그래프 가져오기
지식 그래프 내보내기
지식 그래프 생성
CSV 파일에서
JSON 파일
지식 그래프 생성
경고 작업
스몰 토크
Digital Skills
디지털 양식
Views
Digital Views
Panels
Widgets
기차
봇 성능 향상 – NLP 최적화
기계 학습
소개
모델 검증
기초 의미
지식 그래프 학습
특성
순위 및 해결
고급 NLP 설정
NLP 설정 및 지침
봇 인텔리전스
소개
컨텍스트 관리
컨텍스트 관리
대화 관리
다중 – 의도 탐지
엔티티 수정
기본 대화
정서 관리
어조 분석
Test & Debug
봇과 대화
발화 테스트
배치 테스트하기
대화 테스트
배포
채널 활성화
봇 게시
분석
봇 분석하기
Conversations Dashboard
Performance Dashboard
사용자 정의 대시보드
소개
맞춤형 메타 태그
사용자 정의 대시보드 생성 방법
Conversation Flows
NLP 지표
Containment Metrics
사용량 지표
스마트 봇
소개
범용 봇
소개
범용 봇 정의
범용 봇 생성
범용 봇 학습
범용 봇 커스터마이징
범용 봇용 추가 언어 활성화
스토어
Manage Assistant
플랜 및 사용량
Overview
Usage Plans
Support Plans
플랜 관리
봇 인증
다국어 봇
개인 식별 정보 삭제하기
봇 변수 사용
IVR 통합
일반 설정
봇 관리

방법
간단한 봇 생성하기
Design Conversation Skills
뱅킹 봇 생성
뱅킹 봇 – 자금 이체
뱅킹 봇 – 잔액 업데이트
Knowledge Graph (KG) 구축
스마트 경고를 예약하는 방법
Design Digital Skills
디지털 양식 설정 방법
디지털 보기 설정 방법
데이터 테이블에 데이터를 추가하는 방법
데이터 테이블 내 데이터 업데이트 방법
UI 양식에서 데이터 테이블에 데이터를 추가하는 방법
Train the Assistant
특성 사용 방법
의도와 엔티티에 대한 패턴 사용 방법
컨텍스트 전환 관리 방법
Deploy the Assistant
상담사 전환을 설정하는 방법
봇 기능 사용 방법
콘텐츠 변수 사용 방법
전역 변수 사용 방법
Kore.ai 웹 SDK 튜토리얼
Kore.ai 위젯 SDK 튜토리얼
Analyze the Assistant
사용자 정의 대시보드 생성 방법
사용자 지정 태그를 사용하여 봇 메트릭을 필터링하는 방법

API 및 SDK
API 참조
Kore.ai API 사용
API 목록
API 컬렉션
koreUtil Libraries
SDK 참조
상담사 전환을 설정하는 방법
봇 기능 사용 방법
콘텐츠 변수 사용 방법
전역 변수 사용 방법
소개
Kore.ai 웹 SDK 튜토리얼
Kore.ai 위젯 SDK 튜토리얼

관리
소개
봇 관리자 콘솔
대시보드
사용자 관리
사용자 관리
그룹 관리
역할 관리
봇 관리 모듈
등록
사용자 초대
사용자 등록을 위한 대량 초대 보내기
사용자 및 사용자 데이터 가져오기
Active Directory에서 사용자 동기화
보안 및 준수
싱글 사인 온 사용
보안 설정
Kore.ai 커넥터
봇 관리자용 분석
청구
  1. Docs
  2. Virtual Assistants
  3. SDKs
  4. SDK 보안2 min read

SDK 보안2 min read

Kore.ai 봇 플랫폼은 메시지를 연결하고 교환할 수 있는 권한이 있는 클라이언트만 허용합니다. 봇 빌더 도구에서 Kore.ai 봇 플랫폼에 SDK 앱을 등록하고 클라이언트 자격 증명을 획득해야 합니다. 그런 다음, 클라이언트 자격 증명을 사용하여 앱에 권한을 부여하고 사용자, 봇, 봇 플랫폼 간에 앱 통신 교환을 사용할 수 있습니다.

SDK 보호하기

Kore.ai SDK를 사용하면, Kore.ai 봇 플랫폼과 안전한 인터렉션을 생성할 수 있습니다. Kore.ai SDK 라이브러리는 웹 또는 모바일 애플리케이션에 내장되어 HTTPS를 호출하고 Kore.ai 봇과 대화하는 애플리케이션의 사용자를 대신하여 Kore.ai 봇 플랫폼과 웹 소켓 연결을 설정할 수 있습니다. ID를 설정하고 안전한 웹 세션을 시작하는 방법:

  • 애플리케이션 SDK는 사용자의 ID를 서명하고 Kore.ai 봇 플랫폼으로 보내야 합니다
  • Kore.ai 봇 플랫폼은 다음을 사용하여 애플리케이션과 신뢰를 구축하기 위한 서명을 확인합니다.
    • JSON 웹 토큰(JWT) – 사용자 ID를 Kore.ai 봇 플랫폼으로 보내는 데 사용됩니다
    • 베어러 토큰 – 애플리케이션 SDK는 JWT를 후속 호출에 사용되는 베어러 토큰으로 교환합니다

JWT 소개

Kore.ai는 JWT(JSON 웹 토큰) 메커니즘을 사용하여 인증을 처리합니다.

JWT 흐름

다음 다이어그램은 Kore.ai 봇 플랫폼의 일반적인 JWT 흐름을 보여줍니다.

JWT 토큰

JSON 웹 토큰은 점(.)으로 구분된 세 부분으로 구성됩니다 :

  • 헤더
  • 페이로드
  • 서명

hhhhh.ppppp.sssss 구문을 사용하며, h는 헤더, p는 페이로드, s는 서명을 나타냅니다.

JWT 헤더

JWT 헤더는 토큰 유형인 JWT 및 보안 알고리즘을 정의합니다. 예:

{
   "alg": "HS256",
   "typ": "JWT"
}

JWT 유형은 다음 중 하나일 수 있습니다.

  • HS256(HMAC with SHA-256) – 이 알고리즘은 토큰에 서명하기 위해 시크릿 키를 사용합니다. 시크릿 키는 봇의 웹/모바일 클라이언트 채널을 정의할 때 앱이 봇 빌더에 등록될 때 생성됩니다.
  • RS256(RSA signature with SHA-256) – 이것은 토큰에 서명하고 확인하기 위한 RSA 공개/비공개 키 기반 알고리즘입니다. 클라이언트 공개 키는 앱이 Kore.ai 플랫폼의 봇 빌더 도구에 등록될 때 정의됩니다. 클라이언트 앱은 개인 키를 사용하여 토큰에 서명하고, Kore.ai 봇 플랫폼은 공개 키를 사용하여 이 토큰을 확인합니다.

이러한 JWT 유형을 봇에 사용하려면, 애플리케이션을 등록하고 알고리즘 유형을 선택해야 합니다. JWT 사용에 대한 자세한 내용은, https://tools.ietf.org/html/rfc7519https://jwt.io/introduction/을 참조하세요.

JWT 페이로드

SDK 클라이언트는 봇의 웹/모바일 클라이언트 채널과 앱 사용자의 ID를 정의할 때 봇 빌더에서 생성된 앱 등록 자격 증명을 사용하여 고유한 JSON 웹 토큰을 생성함으로써 사용자를 확인해야 합니다. 다음 예는 JWT를 생성하는 데 사용되는 샘플 페이로드를 보여줍니다. 샘플 헤더

{
    "alg": "HS256",
    "typ": "JWT"
}

샘플 페이로드

{
    "iat": 1466684723,
    "exp": 1466684783,
    "jti": "1234",               //or kore_jti
    "aud": "https://idproxy.kore.ai/authorize",
    "iss": "cs-xxxxxxxxxx-1234", //or kore_iss
    "sub": "john.doe@achme.com", //or kore_sub
    "isAnonymous": false,
    "identityToMerge": "anonymoususer1@test.com" //to map anonymous user
}

다음 표에서는 JWT 헤더와 페이로드에 대한 매개변수를 설명합니다.

매개변수 설명 유형
alg

보안 알고리즘의 드롭다운 목록입니다. 다음 중 하나입니다.

  • RS256공개 키 필드를 활성화하려면 선택합니다. 공개 키는 Kore.ai 봇 플랫폼이 클라이언트 애플리케이션을 인증하는 데 사용됩니다.
  • HS256 – 시크릿 키 및 클라이언트 ID를 생성하려면 선택합니다. 클라이언트 ID는 SDK 초기화를 위해 필요하며, 시크릿 키는 Kore.ai 봇 플랫폼이 클라이언트 애플리케이션을 인증하는 데 사용됩니다.
문자열
typ 토큰 유형입니다. JSON 웹 토큰의 경우, JWT를 입력합니다. 문자열
iat 토큰이 발행된 날짜/시간입니다. 이 값은 초 단위여야 합니다. 정수
exp 토큰이 만료되는 날짜/시간입니다. 이 값은 초 단위여야 합니다. 정수
jti 또는 kore_jti(옵션) 재생 공격을 방지하는 데 사용할 수 있는 jti 클레임: “이 “jti” (JWT ID) 클레임은 JWT에 대한 고유 식별자를 제공합니다. 식별자 값은 같은 값이 다른 데이터 개체에 우연히 할당될 수 있는 가능성이 아주 낮도록 할당되어야 합니다. 애플리케이션이 여러 발급자를 사용하는 경우, 다른 발급자가 생성한 값들 사이의 충돌도 방지되어야 합니다. “jti” 클레임은 JWT가 다시 재생되지 않도록 하는 데 사용될 수 있습니다. “jti” 값은 대/소문자를 구분하는 문자열입니다. 이 클레임의 사용은 선택 사항입니다.” (참조) 참고 사항: 미리 채워진 jti 값을 Kore 특정 값으로 우회하려면 kore_jti를 사용합니다 문자열
aud 토큰이 의도된 오디언스입니다. Kore.ai의 경우, 오디언스는 https://idproxy.kore.com/authorize입니다. 문자열
iss 또는 kore_iss 클라이언트 애플리케이션의 클라이언트 ID입니다. 클라이언트 ID는 앱이 Kore.ai 봇 빌더에 등록되어 있을 때 생성됩니다. 참고: 미리 채워진 iss 값을 Kore 특정 값으로 우회하려면 kore_iss를 사용합니다 문자열
sub 또는 kore_sub 클라이언트 애플리케이션 시스템에 로그인한 사용자의 이메일 ID 또는 휴대전화 번호로 표현되는 토큰 제목입니다. 익명 사용자의 경우, 클라이언트 앱이 고유한 임의 ID를 생성하고 해당 ID를 이 필드에 할당할 수 있습니다. 참고: 미리 채워진 sub 값을 Kore 특정 값으로 우회하려면 kore_sub을 사용합니다 문자열
isAnonymous true로 설정되면, 사용자는 클라이언트 애플리케이션 시스템의 익명 사용자가 됩니다. 익명 사용자는 Kore.ai 플랫폼에서 지속되지 않습니다. 기본값 설정은 false입니다. boolean
identityToMerge 알려진 사용자로 병합해야 하는 익명 ID입니다. 자세한 내용은 여기를 참조하세요 문자열

jti 유효성 검사

Jti 클레임이 JWT 페이로드의 일부로 전달되는 경우, 플랫폼은 다음 유효성 검사를 수행합니다.

  1. 만료가 1시간 미만인 경우: 이 요구 사항을 충족하지 못하는 경우, 다음과 같은 응답이 수신됩니다.
    {"errors":[{"msg":"error verifying the jwt: if \"jti\" claim \"exp\" must be <= 1 hour(s)","code":401}]}
  2. XHR 재생 제한: 규정 미 준수 시 다음 응답이 수신됩니다.
    {"errors":[{"msg":"error verifying the jwt: possibly a replay","code":401}]}

JWT 생성 웹 서비스 호스팅하기

Kore.ai SDK 라이브러리 및 UI 위젯은 클라이언트 애플리케이션으로 직접 통합되므로, 서버에서 JWT를 생성해야 합니다.

  • 웹 SDK의 경우, SDK 라이브러리는 사용자의 브라우저에서 실행됩니다.
  • 모바일 SDK의 경우, SDK 라이브러리는 사용자의 휴대전화에서 실행됩니다.

JWT 생성에 클라이언트 시크릿 또는 RSA 공개 키가 필요하므로 보안을 위해 REST 웹 서비스로 JWT 생성을 호스팅해야 하며 클라이언트 애플리케이션에서 호스팅되면 안 됩니다. REST 웹 서비스를 SDK 라이브러리에서 직접 사용할 수 있도록 하거나 백엔드에서 애플리케이션이 JWT 생성 웹 서비스를 호출하도록 하여 SDK 라이브러리에서 JWT를 사용할 수 있도록 할 수 있습니다. SDK 라이브러리에서 JWT 생성 웹 서비스를 사용할 수 있는 경우, 클라이언트 ID, 클라이언트 시크릿 및 모든 키 만료 로직을 서버 측에 유지하고 클라이언트에서의 사용자 ID만 예상해야 합니다. JWT 생성을 위해 사용 가능한 오픈 소스 라이브러리가 있습니다. 예:

클라이언트에 대한 자격 증명을 생성하려면, 봇 빌더 도구에서 클라이언트 앱을 등록해야 합니다. 자세한 내용은, SDK 앱 등록을 참조하세요. 테스트 애플리케이션인 Kore.ai 샘플 봇을 사용하고 JWT 생성을 위한 로컬 호스트 서버를 구성하여 튜토리얼을 체험할 수도 있습니다. 자세한 내용은, Kore.ai 웹 SDK 튜토리얼을 참조하세요.

JSON 웹 암호화(JWE)

JWT는 시크릿 키(HS-256 알고리즘) 또는 RSA 개인 키(RS-256 알고리즘)를 사용하여 페이로드에 서명하고 사용자 ID를 안전한 형태로 보내는 데 사용됩니다. JWT에서 사용자 ID와 함께 추가 사용자 데이터를 전송하여 대화 실행 컨텍스트에서 사용 가능하도록 해야 할 수도 있습니다. 이 추가 데이터는 민감 정보일 수 있습니다. 따라서, 암호화된 형태로 보내야 합니다. JWE(JSON 웹 암호화)는 암호화된 형태로 JWT를 전송하는 방법을 제공하는 IETF 표준입니다.

JWT 생성하기

JWT 토큰에는 다섯 가지 부분이 있습니다.

  • 헤더,
  • JWE 암호화된 키(CEK),
  • 초기화 벡터,
  • 암호문, 및
  • 인증 태그

헤더

헤더 부분은 다음과 같은 속성을 가질 수 있습니다.

  • alg: 콘텐츠 키 래핑 알고리즘을 정의합니다. 지원하는 알고리즘은 다음과 같습니다.
    • RSA-OAEP,
    • RSA1_5
  • enc: 콘텐츠 암호화 알고리즘을 정의합니다. 콘텐츠 암호화를 지원하는 알고리즘은 다음과 같습니다.
    • A128CBC-HS256
    • A128GCM
    • A256GCM
  • kid: Kore 플랫폼의 공개 키의 키 Id입니다. 이것은 JWE 봇 빌더를 활성화할 때 표시됩니다.
  • typ: 래핑된 콘텐츠가 JWT이므로 JWT를 값으로 가지게 됩니다.

아래는 디코딩된 샘플 JWT 헤더입니다.
{
"alg": "RSA-OAEP",
"enc": "A128CBC-HS256",
"kid": "k-ffb4hty69-750a-44af-91c1-de0bvcf6a",
"typ": "JWT"
}

JWE 암호화된 키(CEK)

대칭 키는 헤더의 “enc” 필드에 지정된 알고리즘을 사용하여 페이로드를 암호화하기 위해 생성됩니다. 이 키는 헤더의 “alg” 필드에 지정된 알고리즘을 사용하고 Kore.ai 공개 키를 사용하여 암호화됩니다.

초기화 벡터

이것은 페이로드(JWT)의 암호화에 사용됩니다.

암호문

이것은 암호화된 JWT 페이로드를 포함합니다. 이것은 초기화 벡터를 사용하여 헤더의 “enc” 필드에 지정된 알고리즘을 사용하여 암호화됩니다.

인증 태그

인증 태그는 헤더의 “enc” 필드에 지정된 알고리즘을 사용하여 인증된 암호화가 수행될 때 생성됩니다. 이것은 무결성 보장을 위해 복호화 중에 사용됩니다. Kore.ai 공캐 키는 SDK 앱을 생성하는 동안 JWE 옵션을 활성화하면 JWK 형식으로 표시됩니다. 이것을 라이브러리에서 사용하여 JWE를 생성할 수 있습니다.
JWE에 대한 자세한 내용은, https://tools.ietf.org/html/rfc7516를 참조하세요.

메뉴