Skip to Content
DocsClientsTypeScriptAuthentifizierung

Authentifizierung

Authentifizierung und Identity Claims für den TypeScript Client.

Client-Credentials mit Identity Claims

import { Client } from '@processcube/client'; const client = new Client('http://localhost:8000', { clientId: 'my-service', clientSecret: 'secret-key', authorityUrl: 'http://localhost:11235', identity: { sub: 'user-123', name: 'Max Mustermann', email: 'max@example.com', roles: ['manager', 'approver'], }, });

Identity Claims ermöglichen es, im Namen eines Benutzers zu agieren, auch wenn ein Service-Client verwendet wird.

Verwendungszwecke

User Tasks im Namen von Benutzern

// Client mit User-Identity erstellen const userClient = new Client(engineUrl, { clientId: 'my-app', clientSecret: 'secret', authorityUrl: 'http://localhost:11235', identity: { sub: userId, name: userName, email: userEmail, }, }); // User Tasks werden gefiltert nach diesem Benutzer const userTasks = await userClient.getUserTasks({ processKey: 'ApprovalProcess', });

Prozesse als bestimmter Benutzer starten

const result = await userClient.startProcess('OrderProcess', { customerName: 'Max Mustermann', orderAmount: 1500, }); console.log(`Prozess gestartet als ${userName}`);

Token-Management

Der Client verwaltet Access-Tokens automatisch:

// Token wird automatisch beim ersten Request abgerufen const processes = await client.getProcesses(); // Token wird automatisch erneuert, wenn abgelaufen const instances = await client.getProcessInstances({ processKey: 'OrderProcess', });

Best Practices

Environment Variables

const client = new Client( process.env.ENGINE_URL || 'http://localhost:8000', { clientId: process.env.CLIENT_ID || '', clientSecret: process.env.CLIENT_SECRET || '', authorityUrl: process.env.AUTHORITY_URL || 'http://localhost:11235', } );

Identity Claims aus Request

import { Request } from 'express'; function createUserClient(req: Request): Client { const user = req.user; // Von Authentication Middleware return new Client(process.env.ENGINE_URL || '', { clientId: process.env.CLIENT_ID || '', clientSecret: process.env.CLIENT_SECRET || '', authorityUrl: process.env.AUTHORITY_URL || '', identity: { sub: user.id, name: user.name, email: user.email, }, }); }

Nächste Schritte