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,
},
});
}