Sichern Sie Ihre AgentCreator mit SnapLogic API Management

Markus Pentzek Porträtfoto
18 min gelesen
Fassen Sie dies mit AI zusammen

Da generative KI-Anwendungen sich von Prototypen zu unternehmensgerechten Lösungen entwickeln, ist die Gewährleistung der Sicherheit unverzichtbar. Diese Anwendungen interagieren häufig mit sensiblen Benutzerdaten, internen Datenbanken und Entscheidungslogiken, die vor unbefugtem Zugriff geschützt werden müssen. Streamlit eignet sich zwar hervorragend für die schnelle Entwicklung interaktiver KI-Schnittstellen, verfügt jedoch nicht über integrierte Zugriffskontrollmechanismen. Daher ist die Integration robuster Authentifizierungs- und Autorisierungsworkflows für den Schutz sowohl der Benutzeroberfläche als auch der Backend-APIs von entscheidender Bedeutung.

Übersicht über die AgentCreator Streamlit-Architektur

Dieser Leitfaden konzentriert sich auf die Sicherung einer generativen, KI-gestützten Vertriebsagentenanwendung, die mit SnapLogic AgentCreator erstellt und über Streamlit bereitgestellt wurde. Die Anwendung integriert Salesforce OAuth 2.0 als Identitätsanbieter und sichert ihre Backend-APIs mit SnapLogic API Management. Durch diese Konfiguration können nur autorisierte Salesforce-Benutzer aus einer vertrauenswürdigen Domäne auf die Anwendung zugreifen, wodurch eine durchgängige Sicherheit sowohl für das Frontend als auch für das Backend gewährleistet ist.

Den Anwendungsstack verstehen

Die Rolle des AgentCreator von SnapLogic

Mit dem SnapLogic AgentCreator können Entwickler und Vertriebsingenieure anspruchsvolle KI-gestützte Agenten erstellen, ohne eine komplexe Infrastruktur verwalten zu müssen. Diese Agenten arbeiten innerhalb von SnapLogic-Pipelines, wodurch sich Geschäftslogik, API-Integrationen und Datenverarbeitung auf modulare Weise leicht einbetten lassen. Ein mit AgentCreator erstellter AgentCreator über Triggered Tasks als API bereitgestellter Vertriebsassistent kann beispielsweise CRM-Daten in Echtzeit abrufen, intelligente Antworten generieren und diese über eine übersichtliche Weboberfläche zurückgeben.

Streamlit als Benutzeroberfläche

Auf der Benutzeroberfläche wird Streamlit verwendet, um eine einfache, interaktive Webschnittstelle zu erstellen, über die Benutzer den Vertriebsmitarbeiter befragen können.

Die Bedeutung des API-Managements in KI Workflows

Sobald diese Agenten über HTTP-APIs verfügbar sind, ist es entscheidend, zu verwalten, wer darauf zugreift – und wie. Hier kommt SnapLogic API Management ins Spiel. Es bietet Tools der Enterprise-Klasse für die Veröffentlichung von APIs, die Sicherung von Endpunkten, die Durchsetzung rollenbasierter Zugriffskontrollen und die Überwachung des Datenverkehrs. Diese Funktionen stellen sicher, dass nur verifizierte Benutzer und Clients mit Ihren APIs interagieren können, wodurch das Risiko eines unbefugten Datenzugriffs oder Missbrauchs verringert wird.

Die eigentliche Herausforderung besteht jedoch darin, beide Seiten zu sichern:

  • Die Streamlit-Benutzeroberfläche, deren Zugriff auf autorisierte Benutzer beschränkt werden muss.
  • Die SnapLogic-APIs, die die AgentCreator offenlegen, welche jede eingehende Anfrage validieren und autorisieren müssen.

OAuth 2.0-Authentifizierung: Grundlagen und Vorteile

Was ist OAuth 2.0?

OAuth 2.0 ist ein offenes Standardprotokoll, das für den sicheren delegierten Zugriff entwickelt wurde. Anstatt Anmeldedaten direkt weiterzugeben, gewähren Benutzer Anwendungen mithilfe von Zugriffstoken Zugriff auf ihre Ressourcen. Dieses Modell ist besonders in Unternehmensumgebungen von großem Wert, in denen eine zentrale Identitätsverwaltung von entscheidender Bedeutung ist. Durch die Verwendung von OAuth 2.0 können Anwendungen Benutzer über vertrauenswürdige Identitätsanbieter (IDPs) authentifizieren und gleichzeitig eine Trennung zwischen Authentifizierung, Autorisierung und Anwendungslogik aufrechterhalten.

Warum Salesforce als Identitätsanbieter (IDP) verwenden?

Salesforce ist ein robuster Identitätsanbieter, auf den viele Unternehmen bereits für CRM, Benutzerverwaltung und Sicherheit vertrauen. Durch die Nutzung von Salesforce für die OAuth 2.0-Authentifizierung können Entwickler auf eine bereits vorhandene Benutzerbasis und ein vertrauenswürdiges Unternehmensframework zurückgreifen. In diesem Tutorial wird Salesforce für die Anmeldung und die Ausgabe von Tokens verwendet, um sicherzustellen, dass nur autorisierte Salesforce-Benutzer auf die Streamlit-Anwendung zugreifen können. Diese Integration vereinfacht auch die Einhaltung von Identitätsrichtlinien des Unternehmens wie SSO, MFA und domänenbasierten Einschränkungen.

Um die Authentifizierungsherausforderung zu bewältigen, verwenden wir den OAuth 2.0-Autorisierungscode-Flow, wobei Salesforce sowohl als Identitäts- als auch als Token-Anbieter fungiert.

Hier finden Sie die offizielle Dokumentation von Salesforce zu OAuth-Endpunkten, die Ihnen bei der Konfiguration Ihrer verbundenen App hilfreich sein kann.

 Hinweis: Salesforce ist zwar die logische Wahl für dieses Beispiel, da der Vertriebsmitarbeiter mit Salesforce-Daten interagiert, es kann jedochjeder OAuth2-kompatible Identitätsanbieter (IDP) wie Google, Okta oder Microsoft Entra ID (ehemals Azure AD) verwendet werden. Der grundlegende Authentifizierungsablauf bleibt derselbe, wobei sich die Unterschiede hauptsächlich auf die OAuth-Endpunkte und die Schritte zur App-Registrierung beziehen.

Architekturübersicht und Sicherheitsziele

Frontend (Streamlit) vs. Backend (SnapLogic-APIs)

Die Anwendungsarchitektur trennt die Frontend-Schnittstelle und die Backend-Logik. Das Frontend wurde mit Streamlit erstellt, wodurch Benutzer mit einem visuell intuitiven Dashboard interagieren können. Es übernimmt die Anmeldung, zeigt KI-generierte Antworten an und erfasst Benutzereingaben. Das Backend, das auf SnapLogic AgentCreator basiert, hostet die Kerngeschäftslogik in Pipelines, die als APIs verfügbar sind. Diese Trennung gewährleistet Flexibilität und modulare Entwicklung, bringt jedoch auch die Herausforderung mit sich, beide Komponenten unabhängig voneinander und dennoch kohärent zu sichern.

Bedrohungsmodell und Sicherheitsziele

Zu den primären Sicherheitsrisiken in einem solchen System zählen unbefugter Zugriff auf die Benutzeroberfläche, Datenlecks durch ungesicherte APIs und Missbrauch von Tokens. Um diese Risiken zu mindern, wurden die folgenden Sicherheitsziele festgelegt:

  • Authentifizierung: Stellen Sie sicher, dass sich nur legitime Benutzer von einem vertrauenswürdigen Identitätsanbieter (Salesforce) anmelden können.
  • Autorisierung: Gewähren Sie API-Zugriff basierend auf Benutzerrollen und Domänen, die über SnapLogic APIM-Richtlinien überprüft werden.
  • Token-Integrität: Validieren und überprüfen Sie Zugriffstoken, bevor Sie die Backend-Kommunikation mit SnapLogic APIM-Richtlinien zulassen.
  • Geheimnisverwaltung: Speichern Sie sensible Anmeldedaten (wie Client-ID und Geheimnis) sicher mit den Geheimnisverwaltungsfunktionen von Streamlit.

Dieser mehrschichtige Ansatz entspricht den Sicherheitsstandards von Unternehmen und bietet ein skalierbares Modell für zukünftige generative KI-Anwendungen.

Authentifizierungs- und Autorisierungsablauf

So verwalten wir den Zugriff sicher:

1. Anmeldung über Salesforce:

  • Benutzer werden zum Anmeldebildschirm von Salesforce weitergeleitet.


Weiterleitung zur Saleforce-Anmeldeseite

  • Nach erfolgreicher Anmeldung leitet Salesforce mit einem Zugriffstoken zurück zur App weiter.
  • Der Token und die Benutzeridentitätsdaten werden im Sitzungsstatus von Streamlit gespeichert.

2. Aufruf von SnapLogic-APIs:

  • Das Frontend sendet Anfragen an die ausgelösten Aufgaben-APIs von SnapLogic und fügt dabei das Salesforce-Zugriffstoken im HTTP-Header „Authorization“ hinzu.

3. Sicherung von APIs über SnapLogic-Richtlinien:

  • Callout-Authentifizierungsrichtlinie: Validiert das Token, indem es an den Token-Validierungsendpunkt von Salesforce gesendet wird, da Salesforce-Token undurchsichtig und nicht wie JWTs in sich geschlossen sind.
  • Richtlinie „AuthorizeByRole“: Nach dem Extrahieren der E-Mail-Adresse des Benutzers überprüft diese Richtlinie, ob die Domäne (z. B. @snaplogic.com) zulässig ist. Ist dies der Fall, wird der Zugriff gewährt.

Nachfolgend finden Sie den vollständigen OAuth 2-Autorisierungscode-Ablauf, erweitert um die Token-Introspektion.


Authentifizierungs- und Autorisierungsablauf

Diese Konfiguration gewährleistetdurchgängige Sicherheit und kombiniert die OAuth-basierte Authentifizierung mit den API-Management-Funktionen von SnapLogic für Unternehmen. In den folgenden Abschnitten werden wir Schritt für Schritt durch die Implementierung der einzelnen Komponenten führen – von der Einrichtung der Salesforce Connected App bis zur Konfiguration von Richtlinien in SnapLogic –, damit Sie dieses Muster für Ihre eigenen generativen KI-Anwendungen replizieren oder anpassen können.

Schritt 1: Salesforce Connected App einrichten

Navigieren Sie zur Salesforce Developer Console.

Um den OAuth 2.0-Authentifizierungsablauf zu starten, müssen Sie Ihre Anwendung als verbundene App in Salesforce registrieren. Melden Sie sich zunächst bei Ihrem Salesforce-Entwickler- oder Administratorkonto an. Navigieren Sie über das Zahnradsymbol oben rechts zu „Setup“ → „App Manager“. Klicken Sie auf „New Connected App“, um ein neues OAuth-fähiges Anwendungsprofil zu erstellen.

OAuth-Callback-URLs und -Bereiche definieren

Legen Sie im neuen Formular „Connected App“ die folgenden Felder unter dem Abschnitt „API (OAuth-Einstellungen aktivieren) “ fest:

  • Callback-URL: Dies sollte die URL Ihrer Streamlit-Anwendung sein (z. B. https://snaplogic-genai-builder.streamlit.app/Sales_Agent).
  • Ausgewählte OAuth-Bereiche: Umfassen Sie mindestens openid, email und profile. Je nach erforderlicher Zugriffsebene können Sie auch zusätzliche Bereiche hinzufügen.

Stellen Sie sicher, dass das Kontrollkästchen „OAuth-Einstellungen aktivieren“ aktiviert ist, damit diese App OAuth-kompatibel ist.

Client-ID und Client-Secret abrufen

Nach dem Speichern der App-Konfiguration generiert Salesforce einen Consumer Key (Client-ID) und einen Consumer Secret. Diese sind für den OAuth-Austausch von entscheidender Bedeutung und müssen sicher gespeichert werden. Sie werden diese Werte später bei der Konfiguration der Streamlit-OAuth-Integration und der Umgebungseinstellungen verwenden. Geben Sie diese Geheimnisse nicht in Ihrer Codebasis oder Versionskontrolle preis.

Weitere Informationen zu Salesforce OAuth-Endpunkten finden Sie unter: Dokumentation zu Salesforce OAuth-Endpunkten

Schritt 2: OAuth mit Streamlit integrieren Mit streamlit-oauth

Installieren und konfigurieren Sie das Paket streamlit-oauth.

Um die OAuth 2.0-Authentifizierung in Ihre Streamlit-Anwendung zu integrieren, können Sie das Drittanbieterpaket streamlit-oauth (streamlit-oauth) verwenden. Dieses Paket abstrahiert den OAuth-Ablauf und vereinfacht die Integration mit gängigen Identitätsanbietern wie Salesforce. Um es zu installieren, führen Sie den folgenden Befehl in Ihrem Terminal aus:

pip install streamlit-oauth

Nach der Installation konfigurieren Sie die OAuth2Component, um den Anmeldevorgang zu starten und den Empfang des Tokens zu verarbeiten, sobald die Authentifizierung erfolgreich war.

ClientID und ClientSecret sicher handhaben

Sobald sich Benutzer über Salesforce anmelden, erhält die App einen Zugriffstoken und einen ID-Token. Diese Token sollten niemals in der Benutzeroberfläche angezeigt oder öffentlich protokolliert werden. Speichern Sie sie stattdessen sicher in st.session_state, dem nativen Sitzungsmanagementsystem von Streamlit. Dadurch wird sichergestellt, dass die Token an die Sitzung des Benutzers gebunden sind und später im Ablauf für API-Aufrufe abgerufen werden können.

Speichern Sie Anmeldedaten über Streamlit Secrets Management

Das Speichern von Geheimnissen wie CLIENT_ID und CLIENT_SECRET direkt in Ihrem Quellcode stellt ein Sicherheitsrisiko dar. Streamlit bietet ein integriertes Geheimnisverwaltungssystem, mit dem Sie sensible Informationen in einer .streamlit/secrets.toml-Datei speichern können, die von der Versionskontrolle ausgeschlossen werden sollte.

Beispiel:

# .streamlit/secrets.toml
    SF_CLIENT_ID = "your_client_id"
    SF_CLIENT_SECRET = "your_client_secret"

In Ihrem Code können Sie sicher darauf zugreifen:

CLIENT_ID = st.secrets["SF_CLIENT_ID"]
    CLIENT_SECRET = st.secrets["SF_CLIENT_SECRET"]

Schritt 3: Verwalten Sie die Umgebungseinstellungen mit python-dotenv

Warum Umgebungsvariablen wichtig sind

Die Verwaltung umgebungsspezifischer Konfigurationen ist für die Aufrechterhaltung sicherer und skalierbarer Anwendungen unerlässlich. Neben der Speicherung sensibler Anmeldedaten mithilfe der Geheimnisverwaltung von Streamlit können Sie durch die Speicherung dynamischer OAuth-Parameter wie URLs, Bereiche und Umleitungs-URIs in einer Umgebungsdatei (z. B. .env) Ihren Code übersichtlich und Ihre Konfiguration flexibel halten. Dies ist besonders nützlich, wenn Sie eine Bereitstellung in mehreren Umgebungen (Entwicklung, Staging, Produktion) mit unterschiedlichen Einstellungen planen.

OAuth-Endpunkte in .env-Dateien speichern

Um Umgebungseinstellungen zu verwalten, verwenden Sie das Python-Paket python-dotenv (python-dotenv), das Umgebungsvariablen aus einer .env-Datei in Ihre Python-Anwendung lädt. Installieren Sie zunächst die Bibliothek:

pip install python-dotenv

Erstellen Sie eine .env-Datei in Ihrem Projektverzeichnis mit dem folgenden Format:

SF_AUTHORIZE_URL=https://login.salesforce.com/services/oauth2/authorize
SF_TOKEN_URL=https://login.salesforce.com/services/oauth2/token
SF_REVOKE_TOKEN_URL=https://login.salesforce.com/services/oauth2/revoke
SF_REDIRECT_URI=https://your-streamlit-app-url
SF_SCOPE=id openid email profile

Verwenden Sie anschließend die Funktion „dotenv_values“, um die Variablen in Ihr Skript zu laden:

from dotenv import dotenv_values
env = dotenv_values(".env")

AUTHORIZE_URL = env["SF_AUTHORIZE_URL"]
TOKEN_URL = env["SF_TOKEN_URL"]
REVOKE_TOKEN_URL = env["SF_REVOKE_TOKEN_URL"]
REDIRECT_URI = env["SF_REDIRECT_URI"]
SCOPE = env["SF_SCOPE"]

Dieser Ansatz stellt sicher, dass Ihre sensiblen und umgebungsspezifischen Daten von der Codebasis entkoppelt sind, was die Wartbarkeit und Sicherheit verbessert.

Schritt 4: OAuth-Ablauf in Streamlit konfigurieren

OAuth2-Komponente und Umleitungslogik definieren

Nachdem Sie Ihre Umgebungsvariablen und Geheimnisse eingerichtet haben, ist es an der Zeit, den OAuth-Ablauf in Streamlit mithilfe der OAuth2Component aus dem Paket streamlit-oauth zu konfigurieren. Diese Komponente übernimmt die Umleitung des Benutzers zur Anmeldeseite von Salesforce, das Abrufen des Tokens und das Parsen der Antwort bei der Rückkehr zu Ihrer App.

from streamlit_oauth import OAuth2Component

oauth2 = OAuth2Component(
    client_id=CLIENT_ID,
    client_secret=CLIENT_SECRET,
    authorize_url=AUTHORIZE_URL,
    token_url=TOKEN_URL,
    redirect_uri=REDIRECT_URI
    )

# create a button to start the OAuth2 flow
result = oauth2.authorize_button(
    name="Log in",
    icon="https://www.salesforce.com/etc/designs/sfdc-www/en_us/favicon.ico",
    redirect_uri=REDIRECT_URI,
    scope=SCOPE,
    use_container_width=False
    )

Diese Schaltfläche startet den OAuth2-Flow und übernimmt die Umleitung transparent. Sobald sich der Benutzer erfolgreich angemeldet hat, leitet Salesforce ihn mit einem gültigen Token zurück zur App weiter.

Verarbeitung des Sitzungsstatus für Tokens und Benutzerdaten

Nach der Authentifizierung werden die zurückgegebenen Tokens in st.session_state gespeichert, um einen sicheren, benutzerspezifischen Kontext zu gewährleisten. So entschlüsseln Sie das Token und extrahieren die Identitätsdaten des Benutzers:

if result:
    #decode the id_token and get the user's email address
    id_token = result["token"]["id_token"]
    access_token = result["token"]["access_token"]

    # verify the signature is an optional step for security
    payload = id_token.split(".")[1]

    # add padding to the payload if needed
    payload += "=" * (-len(payload) % 4)
    payload = json.loads(base64.b64decode(payload))
    email = payload["email"]
    username = payload["name"]

    #storing token and its parts in session state
    st.session_state["SF_token"] = result["token"]
    st.session_state["SF_user"] = username
    st.session_state["SF_auth"] = email
    st.session_state["SF_access_token"]=access_token
    st.session_state["SF_id_token"]=id_token
    st.rerun()
    else:
    st.write(f"Congrats **{st.session_state.SF_user}**, you are logged in now!")
    if st.button("Log out"):
    cleartoken()
    st.rerun()

Dieser Mechanismus stellt sicher, dass der authentifizierte Benutzerkontext über alle Interaktionen hinweg erhalten bleibt und sensible Token innerhalb der Sitzung geschützt bleiben.

Der Benutzername wird nach erfolgreicher Anmeldung in der Benutzeroberfläche angezeigt.

Schritt 5: Erstellen und Freigeben einer von SnapLogic ausgelösten Aufgabe

Backend-Logik mit AgentCreator erstellen

Nachdem die Benutzerauthentifizierung im Frontend erfolgt ist, besteht der nächste Schritt darin, die Backend-Geschäftslogik mit SnapLogic AgentCreator zu erstellen. Mit diesem Toolkit können Sie KI-gestützte Pipelines entwerfen, die sich in Datenquellen integrieren lassen, intelligente Verarbeitungsprozesse durchführen und kontextbezogene Antworten liefern. Sie können vorgefertigte Snaps (SnapLogic-Konnektoren) für Salesforce, OpenAI und andere Dienste verwenden, um Ihre Sales Agent-Pipeline zusammenzustellen.

Generieren Sie die Trigger-URL für den API-Zugriff.

Sobald Ihre Pipeline getestet und funktionsfähig ist, stellen Sie sie mithilfe einer ausgelösten Aufgabe als API bereit:

  1. Öffnen Sie in SnapLogic Designer Ihre Sales Agent-Pipeline.
  2. Klicken Sie auf „Aufgabe erstellen“ und wählen Sie „Ausgelöste Aufgabe“.
  3. Geben Sie einen aussagekräftigen Namen ein und legen Sie bei Bedarf Laufzeitparameter fest.
  4. Notieren Sie sich nach dem Speichern die generierte Trigger-URL– diese fungiert als Ihr Backend-Endpunkt, an den die Streamlit-App Anfragen sendet.

Diese URL ist die Brücke zwischen Ihrem authentifizierten Frontend und der sicheren KI-Logik auf der Plattform von SnapLogic. Bevor Sie sie jedoch mit Streamlit verbinden, müssen Sie sie mit SnapLogic API Management schützen, worauf wir im nächsten Abschnitt eingehen werden.

Schritt 6: API mit SnapLogic API Manager sichern

Einführung in API-Richtlinien: Authentifizierung und Autorisierung

Um unbefugten Zugriff auf Ihr Backend zu verhindern, müssen Sie den Endpunkt „Triggered Task“ mithilfe von SnapLogic API Management sichern. SnapLogic ermöglicht richtlinienbasierte Sicherheit, sodass Sie die Authentifizierung und Autorisierung mithilfe von Salesforce-ausgestellten Tokens durchsetzen können. Es werden zwei primäre Richtlinien angewendet: „Callout Authenticator“ und „Authorize By Role“.

Der neue Policy Editor von SnapLogic APIM 3.0

Richtlinie für Anrufauthentifizierung hinzufügen

Diese Richtlinie validiert das von Salesforce erhaltene Zugriffstoken. Da Salesforce-Token undurchsichtig sind (nicht in sich geschlossen wie JWTs), sendet die Callout Authenticator-Richtlinie das Token zur Validierung an den Introspection-Endpunkt von Salesforce. Wenn das Token aktiv ist, gibt Salesforce die Metadaten des Benutzers (E-Mail, Bereich, Client-ID usw.) zurück.

Beispiel für eine gültige Token-Introspektionsantwort:

{
    "active": true,
    "scope": "id refresh_token openid",
    "client_id": "3MVG9C...",
    "username": "[email protected]",
    "sub": "https://login.salesforce.com/id/...",
    "token_type": "access_token",
    "exp": 1743708730,
    "iat": 1743701530,
    "nbf": 1743701530
 }

Wenn das Token ungültig oder abgelaufen ist, wird in der Antwort lediglich Folgendes angezeigt:

{
    "active": false
}

Nachfolgend sehen Sie die Konfiguration der Callout-Authentifizierungsrichtlinie:

Callout-Authentifizierungsrichtlinie, die so konfiguriert ist, dass sie das Zugriffstoken an den Salesforce Introspection Endpoint sendet
Extrahieren Sie die Domäne aus dem Benutzernamen (E-Mail-Adresse), der vom Introspection-Endpunkt nach erfolgreicher Token-Validierung zurückgegeben wird, zur Verwendung in der Autorisierungsrichtlinie nach Rolle.

 

Richtlinie „AuthorizeByRole“ hinzufügen

Sobald das Token validiert ist, überprüft die Richtlinie „Autorisieren nach Rolle“ den von Salesforce zurückgegebenen Benutzernamen (E-Mail-Adresse). Sie können diese Richtlinie so konfigurieren, dass nur Benutzern aus einer vertrauenswürdigen Domäne (z. B. @snaplogic.com) Zugriff gewährt wird, um sicherzustellen, dass externe Benutzer Ihre API nicht missbrauchen können.

Beispielsweise können Sie die Richtlinie so konfigurieren, dass sie überprüft, ob „snaplogic“ im Domain-Teil der E-Mail vorhanden ist. Dies fügt nach der Token-Überprüfung eine zweite Sicherheitsebene hinzu und unterstützt ausschließlich interne Zugriffsmodelle.

Diese Richtlinie gewährt Zugriff, wenn die Rolle „snaplogic“ lautet, was sich aus der vorherigen Ausführung der Callout-Authentifizierungsrichtlinie ergibt.

Schritt 7: Verbinden Sie das Streamlit-Frontend mit der gesicherten API.

Zugriffstoken im HTTP-Autorisierungsheader übergeben

Sobald sich der Benutzer erfolgreich angemeldet hat und das Zugriffstoken in st.session_state gespeichert ist, können Sie dieses Token für die sichere Kommunikation mit Ihrem SnapLogic Triggered Task-Endpunkt verwenden. Das Zugriffstoken muss unter Verwendung des Bearer-Token-Schemas in den Authorization-Header der HTTP-Anfrage aufgenommen werden.

headers = {
    'Authorization': f'Bearer {st.session_state["SF_access_token"]}'
 }

Dadurch wird sichergestellt, dass der SnapLogic API Manager die Anfrage validieren und sowohl Authentifizierungs- als auch Autorisierungsrichtlinien anwenden kann, bevor die Backend-Logik ausgeführt wird.

Anzeige von API-Antworten in der Streamlit-Benutzeroberfläche

Um die Interaktion nahtlos zu gestalten, können Sie die Eingaben des Benutzers erfassen, an die gesicherte API senden und die Antwort direkt in der Streamlit-App rendern. Hier ist ein Beispiel dafür, wie diese Interaktion aussehen könnte:

import requests
    import streamlit as st
    prompt = st.text_input("Ask the Sales Agent something:")
    if st.button("Submit"):
    with st.spinner("Working..."):
    data = {"prompt": prompt}
    headers = {
    'Authorization': f'Bearer {st.session_state["SF_access_token"]}'
    }
    response = requests.post(
    url="https://your-trigger-url-from-snaplogic",
    data=data,
    headers=headers,
    timeout=10,
    verify=False # Only disable in development
    )
    if response.status_code == 200:
    st.success("Response received:")
    st.write(response.text)
    else:
    st.error(f"Error: {response.status_code}")

Dadurch wird das Frontend vollständig mit dem gesicherten Backend verbunden, was sichere Interaktionen in Echtzeit mit Ihrem generativen KI-Agenten ermöglicht.

Häufige Fehlerquellen und Fehlerbehebung

Umgang mit abgelaufenen oder ungültigen Tokens

Eines der häufigsten Probleme bei OAuth-gesicherten Anwendungen ist der Umgang mit abgelaufenen oder ungültigen Tokens. Da Salesforce-Zugriffstokens eine begrenzte Lebensdauer haben, kann es vorkommen, dass die Sitzungen von Benutzern, die eine Zeit lang inaktiv sind, ungültig werden. Um dieses Problem zu beheben:

  • Überprüfen Sie immer die Gültigkeit des Tokens, bevor Sie API-Aufrufe durchführen.
  • Behandeln Sie 401 Unauthorized-Antworten elegant, indem Sie den Benutzer auffordern, sich erneut anzumelden.
  • Implementieren Sie einen Mechanismus zur Aktualisierung von Tokens, wenn Ihre Anwendung langlebige Sitzungen unterstützt (erfordert die Konfiguration von Aktualisierungstokens in Salesforce).

Durch proaktives Management des Token-Lebenszyklus verhindern Sie Störungen der Benutzererfahrung und sichern die API-Kommunikation.

Fehler bei der OAuth-Umleitung beheben

Fehlerhafte Konfigurationen der OAuth-Weiterleitung können den Authentifizierungsablauf blockieren. Hier sind einige häufige Probleme und ihre Lösungen:

  • Falsche Callback-URL: Stellen Sie sicher, dass die SF_REDIRECT_URI in Ihrer .env-Datei genau mit der in den Einstellungen der Salesforce Connected App definierten übereinstimmt.
  • Fehlende Bereiche: Wenn das Token nicht die erwarteten Identitätsfelder (wie E-Mail) enthält, überprüfen Sie, ob alle erforderlichen Bereiche (OpenID, E-Mail, Profil) sowohl in der App-Konfiguration als auch in der OAuth-Anfrage enthalten sind.
  • Domänenbeschränkungen: Wenn der Zugriff auch nach erfolgreicher Anmeldung verweigert wird, überprüfen Sie, ob die E-Mail-Domäne des Benutzers mit der in SnapLogic API Manager festgelegten Richtlinie übereinstimmt.

Das Protokollieren der zurückgegebenen Fehlermeldungen und die Verwendung von Browser-Entwicklertools können Ihnen dabei helfen, das Problem während der Umleitungs- und Rückrufphasen zu lokalisieren.

Bewährte Verfahren für die sichere Bereitstellung von KI-Anwendungen

Geheimnisse regelmäßig wechseln

Um das Risiko von Geheimnisverrat und potenzieller Ausnutzung zu verringern, ist es unerlässlich, sensible Anmeldedaten – wie CLIENT_ID und CLIENT_SECRET – regelmäßig zu rotieren. Auch wenn Streamlit's Secrets Management diese Werte sicher speichert, gewährleistet eine regelmäßige Rotation Widerstandsfähigkeit gegen versehentliche Offenlegung, Insider-Bedrohungen oder Fehlkonfigurationen des Repositorys.

Um dies zu optimieren, richten Sie Kalendererinnerungen ein oder verwenden Sie automatisierte DevSecOps-Pipelines, die Geheimnisse ersetzen und Umgebungsdateien oder Geheimnistreffer entsprechend aktualisieren.

API-Protokolle und Authentifizierungsfehler überwachen

Sicherheit endet nicht mit der Implementierung. Eine kontinuierliche Überwachung ist entscheidend, um potenziellen Missbrauch oder Einbruchsversuche zu erkennen. Die API-Management-Schnittstelle von SnapLogic bietet detaillierte Metriken, die Ihnen dabei helfen können:

  • Verfolgen Sie die API-Nutzung pro Benutzer oder IP-Adresse.
  • Identifizieren Sie wiederholte Autorisierungsfehler oder Fehler bei der Token-Prüfung.
  • Erkennen Sie anomale Muster wie unerwartete Anrufvolumina oder fehlerhafte Anfragen.
SnapLogic API-Metriken-Dashboard

Erweiterung der Architektur

Unterstützung anderer OAuth-Anbieter (Google, Okta, Entra ID)

Dieses Tutorial konzentriert sich zwar auf Salesforce als OAuth 2.0-Identitätsanbieter, aber die gleiche Sicherheitsarchitektur kann auch auf andere beliebte Anbieter wie Google, Okta und Microsoft Entra ID (ehemals Azure AD) ausgeweitet werden. Diese Anbieter sind vollständig OAuth-kompatibel und bieten in der Regel ähnliche Endpunkte für die Autorisierung, den Token-Austausch und die Benutzerintrospektion.

Um den Anbieter zu wechseln, aktualisieren Sie Folgendes in Ihrer .env-Datei:

  • SF_AUTHORIZE_URL
  • SF_TOKEN_URL
  • SF_SCOPE (gemäß der Dokumentation des Anbieters)

Stellen Sie außerdem sicher, dass Ihre App im Entwicklerportal des jeweiligen Anbieters registriert und mit der richtigen Umleitungs-URI und den richtigen Bereichen konfiguriert ist.

Hinzufügen rollenbasierter Zugriffskontrollen

Bei größeren Bereitstellungen reicht eine einfache domänenbasierte Filterung möglicherweise nicht aus. Sie können die Autorisierungslogik durch die Einbindung rollenbasierter Zugriffskontrollen (RBAC) erweitern. Dies kann erreicht werden durch:

  • Einbeziehung benutzerdefinierter Rollen in die OAuth-Token-Nutzlast (z. B. über benutzerdefinierte Ansprüche).
  • Analyse dieser Rollen in der Richtlinie „AuthorizeByRole“ von SnapLogic.
  • Beschränkung des Zugriffs auf bestimmte APIs oder Funktionen basierend auf Benutzerrollen (z. B. Administrator, Analyst, Betrachter).

Mit RBAC können Sie mehrschichtige Anwendungen mit differenzierten Berechtigungen erstellen und gleichzeitig eine strenge Sicherheitsverwaltung aufrechterhalten.

Abschließende Gedanken zur sicheren Bereitstellung von KI-Anwendungen

Die Sicherung Ihrer generativen KI-Anwendungen ist nicht mehr optional – insbesondere, wenn sie für Unternehmensanwendungen entwickelt wurden, bei denen sensible Daten, Kundeninteraktionen und Entscheidungsautomatisierung eine Rolle spielen. In diesem Tutorial wurde ein vollständiges Sicherheitsmodell unter Verwendung vonSnapLogic AgentCreator und Streamlit vorgestellt, das über Salesforce OAuth 2.0 authentifiziert und durch SnapLogic API Management geschützt ist.

Durch Befolgen dieses schrittweisen Ansatzes stellen Sie sicher, dass nur verifizierte Benutzer auf Ihre App zugreifen können und Backend-APIs durch mehrstufige Authentifizierungs- und rollenbasierte Autorisierungsrichtlinien geschützt sind. Dieselbe Architektur lässt sich problemlos auf andere Anbieter ausweiten oder auf mehrere KI-Workflows innerhalb Ihres Unternehmens skalieren.

Ressourcen für weiteres Lernen

Mit einer sicheren Grundlage können Sie nun leistungsstarke KI-Anwendungen der Enterprise-Klasse sicher entwickeln und skalieren.

Markus Pentzek Porträtfoto
Leitender Lösungsingenieur bei SnapLogic
Kategorie: Technik