Authentifizieren

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

Unternehmensgeheimnis abrufen

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

  2. Gehen Sie zu Einstellungen > Entwicklereinstellungen.

  3. Kopieren Sie das Unternehmens-Secret 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 zu HS256.

  2. payload muss Nutzer-ID, Name und E‑Mail-Adresse enthalten. Auch wenn der Nutzer anonym ist und sich noch nicht authentifiziert hat, ist die Kennung 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 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}