Authentifizieren

Für die Authentifizierung bei der CCAI Platform müssen Sie einen Token-Endpunkt implementieren, um ein JSON-Webtoken als Antwort zu generieren.

Firmengeheimnis abrufen

  1. Melden Sie sich im Contact Center AI Platform-Portal mit einem Konto mit Administratorberechtigungen an.

  2. Gehen Sie zu Einstellungen > Entwicklereinstellungen.

  3. Kopieren Sie das Firmengeheimnis als COMPANY_SECRET.

Token-Endpunkt

Der Token-Endpunkt muss ein JWT mit den Informationen des aktuellen Nutzers zurückgeben. Das Ergebnis sieht etwa so aus:

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

Das Token wird mit Folgendem erstellt:

  1. alg von HS256.

  2. payload muss Nutzer-ID, Name und E-Mail-Adresse enthalten. Auch wenn der Nutzer ein anonymer Nutzer ist und sich noch nicht authentifiziert hat, ist die ID erforderlich, damit das SDK wie erwartet funktioniert.

  3. Signieren Sie die Signatur mit 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)

Beispiele

Hier sind einige Beispiele. Wir verwenden /auth/token als Endpunkt.

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}