Eigener Code
Secrets
Sichere Ablage von API-Tokens und anderen Geheimnissen für eigenen Code
Enneo bietet einen zentralen Speicher für Secrets — beispielsweise API-Tokens, Client-Secrets oder Basic-Auth-Credentials —, die in den Headern von API-Call-Executoren über Platzhalter referenziert werden können. Werte werden in der Oberfläche maskiert und nie in API-Antworten ausgegeben.
Secrets werden insbesondere für die direkte API-Aufruf-Ausführung (Typ apiCall) verwendet, damit Authentifizierungs-Header gesetzt werden können, ohne den eigentlichen Token-Wert in der Executor-Definition zu speichern.
Secrets verwalten
Secrets werden in den Einstellungen unter Integration der Umsysteme → Secrets verwaltet. Jeder Eintrag besteht aus:
- Key — der Name des Secrets, z. B.
MY_API_TOKEN. Dieser Name wird im Platzhalter referenziert. - Value — der eigentliche Wert. In der Oberfläche maskiert dargestellt und nicht in API-Antworten enthalten.
Es können beliebig viele Secrets hinterlegt werden.
Secrets in API-Call-Executoren verwenden
In den Header-Werten eines API-Call-Executors können Secrets über den Platzhalter {{secret.KEY}} referenziert werden. Beim Ausführen des Executors ersetzt Enneo den Platzhalter durch den hinterlegten Wert.
Beispiel-Header eines API-Call-Executors:
{
"Authorization": "Bearer {{secret.MY_API_TOKEN}}",
"X-Api-Key": "{{secret.PARTNER_API_KEY}}",
"Accept": "application/json"
}Wenn ein Secret mit dem angegebenen Key nicht existiert, bleibt der Platzhalter im Header-Wert stehen — der Aufruf wird also typischerweise mit einem Authentifizierungsfehler abbrechen, anstatt mit einem leeren Token weitergeleitet zu werden.
Note
Platzhalter werden ausschließlich in Header-Werten aufgelöst, nicht in URL, Body oder Parametern.
Innerhalb von Sandbox-Executoren (Typ code) lassen sich Secrets über das SDK lesen — siehe unten.
Secrets im SDK (Sandbox-Executoren Typ code)
In Sandbox-Executoren stellt das SDK die Methode ApiEnneo.getSecret(key) bereit. Sie liefert den hinterlegten Wert des Secrets oder null/None, falls der Key nicht konfiguriert ist. So lassen sich Secrets verwenden, ohne sie im Code zu hinterlegen.
token = ApiEnneo.getSecret('MY_API_TOKEN')
if not token:
raise RuntimeError('MY_API_TOKEN is not configured')
headers = {
'Authorization': f'Bearer {token}',
'Accept': 'application/json',
}
response = Api.call('GET', 'https://my-api.example.com/v1/orders', headers)const token = await ApiEnneo.getSecret('MY_API_TOKEN');
if (!token) {
throw new Error('MY_API_TOKEN is not configured');
}
const headers = {
Authorization: `Bearer ${token}`,
Accept: 'application/json',
};
const response = await Api.call('GET', 'https://my-api.example.com/v1/orders', headers);$token = ApiEnneo::getSecret('MY_API_TOKEN');
if ($token === null) {
throw new RuntimeException('MY_API_TOKEN is not configured');
}
$headers = [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json',
];
$response = Api::call('GET', 'https://my-api.example.com/v1/orders', $headers);Note
Secrets sollten ausschließlich zur Laufzeit über getSecret gelesen und nicht in Logs,
Rückgabewerten oder Fehlermeldungen ausgegeben werden.
Berechtigungen
Lesen und Schreiben der executorSecrets-Einstellung erfordern die Berechtigung updateAiAgent. Werte werden in der Oberfläche maskiert und nicht in Lese-Endpunkten ausgegeben.