인증

CCAI Platform으로 인증하려면 응답으로 JSON 웹 토큰을 생성하는 토큰 엔드포인트를 구현해야 합니다.

회사 보안 비밀 가져오기

  1. 관리자 권한이 있는 계정을 사용하여 Contact Center AI Platform 포털에 로그인합니다.

  2. 설정 > 개발자 설정으로 이동합니다.

  3. 회사 비밀번호를 COMPANY_SECRET로 복사합니다.

토큰 엔드포인트

토큰 엔드포인트는 현재 사용자의 정보가 포함된 JWT를 반환해야 합니다. 응답은 다음 예시와 유사합니다.

{"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.n...."}

토큰은 다음을 사용하여 생성됩니다.

  1. HS256에 대한 alg입니다.

  2. payload에는 사용자 식별자, 이름, 이메일이 포함되어야 합니다. 사용자가 익명 사용자이고 아직 인증되지 않은 경우에도 SDK가 예상대로 작동하려면 식별자가 필요합니다.

  3. COMPANY_SECRET로 서명에 서명

header = {"alg": "HS256"}
payload = {
  "iss": "{YOUR_COMPANY_NAME}",
  "iat": $unix_timestamp_now,
  "exp": $unix_timestamp_now + 3600,
  "identifier": "{CURRENT_USER_ID}",
  "name": "{CURRENT_USER_NAME}",
  "email": "{CURRENT_USER_EMAIL}",
}

token = jwt_encode(header, payload, COMPANY_SECRET)

예시

다음은 몇 가지 예입니다. 엔드포인트로 /auth/token를 사용합니다.

Express (Node.js)

const express = require('express')
const jwt = require('jsonwebtoken')

const COMPANY_NAME = 'AMCE'
const COMPANY_SECRET = '__read_from_config__'

const app = express()
app.use(express.json())
app.use(your_session_middleware)

app.get('/auth/token', function (req, res) {
  const now = parseInt(Date.now() / 1000, 10)
  const payload = {
    'iss': COMPANY_NAME,
    'iat': now,
    'exp': now + 3600,
  }
  if (req.user) {
    payload.identifier = req.user.id,
    payload.name = req.user.name
    payload.email = req.user.email
  }
  const token = jwt.sign(payload, COMPANY_SECRET, { algorithm: 'HS256' })
  res.json({ token })
})

Flask (Python)

import time
from flask import Flask, request
from joserfc import jwt, jwk

app = Flask(__name__)

COMPANY_NAME = 'AMCE'
COMPANY_SECRET = '__read_from_config__'
secret_key = jwk.OctKey.import_key(COMPANY_SECRET)

@app.route('/auth/token')
def auth_token():
    now = int(time.time())
    payload = {
      'iss': COMPANY_NAME,
      'iat': now,
      'exp': now + 3600,
    }
    if (request.user) {
      payload.identifier = request.user.id,
      payload.name = request.user.name
      payload.email = request.user.email
    }
    token = jwt.encode({'alg': 'HS256'}, payload, secret_key)
    return {'token': token}