Dezember 2025
Autor des Beitrags
Maximilian
Team Lead Business Apps and KI
Veröffentlicht am
16.12.2025 von Maximilian
Jetzt Blogbeitrag teilen
Xing LinkedIn Facebook Twitter
SSO & OBO richtig konfigurieren

Szenario: Teams-Bot greift im Benutzerkontext auf Azure Ressourcen zu

Im Entwicklungsverlauf eines TeamsBots zeigt sich folgendes Anforderungsszenario: Der Bot soll im Kontext der angemeldeten Person auf weitere AzureRessourcen zugreifen.

Dieser Beitrag behandelt die dafür notwendige Grundlage in AzureSingle SignOn (SSO)-, sowie die korrekte Einrichtung des OnBehalfOf(OBO)Flows. Neben dem Rollenverständnis und konkreten Konfigurationsschritten werden kompakte Codebeispiele aus einer Referenzimplementierung erläutert, einschließlich der Integration von Azure AI Search mit Zugriffskontrolle auf Dokumentebene (RBAC) über den Bot. 

Warum in diesem Szenario die Tokenbeschaffung via OBO zwingend erforderlich ist

 

Das TeamsSSO stellt dem Bot ein Token bereit, dessen Audience auf die BotAPI (App Registration: ExposeanAPI, z. B. api://botid-<CLIENT_ID>/access_as_user) gerichtet ist. Dieses Token ist nicht für nachgelagerte Dienste wie Azure AI Search verwendbar, da die Audience und Scopes nicht passen.

Azure AI Search verlangt für Abfragen im Benutzerkontext ein delegiertes Zugriffstoken mit Audiencehttps://search.azure.com und Scope .default. Nur mit einem solchen Ressourcentoken kann der Dienst den Identitätskontext der angemeldeten Person auswerten und RowLevel Security zuverlässig erzwingen.

Der OBOFlow löst genau dieses Problem:

Das vom TeamsClient gelieferte SSOTokendessen Audience auf die App zeigt, die das OBO-Token anfordert wird serverseitigsicher und ohne erneute Benutzerinteraktion gegen ein AzureAISearchToken mit korrekter Audience und Scope getauscht. Dieses Token wird anschließend im Header x-msquerysource-authorization an Azure AI Search übergeben, damit der Dienst die Anfrage der konkreten Person zuordnen und gegen im Index hinterlegte ACLInformationen (z. B. userIds, groupIds) prüfen kann. 

 

Warum Alternativen nicht geeignet sind 

 

Optionen wie reine Query oder AdminKeys des SearchDienstes sind für dieses Anforderungsszenario ungeeignet. Ein Key authentifiziert nur die Anwendung, nicht die Personund würde die Durchsetzung von dokumentenbezogenen Berechtigungen im Sinne von LeastPrivilege und Compliance unterlaufen.  

Auch reine Anwendungsberechtigungen (Application Permissions) ohne Delegation sind problematisch, da sie den individuellen Kontext der angemeldeten Person nicht abbilden. Das OBOMuster stellt dagegen sicher, dass der Bot als vertraulicher Client agiert, die Identität delegiert und alle DownstreamAufrufe, wie etwa Microsoft Graph oder Azure AI Search, mit der tatsächlichen Benutzeridentität stattfinden.  

Ausgangslage und Zielsetzung 

 

Ziel ist ein Teams-Bot, der: 

  • ein SSO-Token aus dem Teams-Client erhält, 
  • dieses Token mittels OBO-Flow gegen Ressourcentokens (z.B. Microsoft Graph, Azure AI Search) eintauscht, 
  • Downstream-Aufrufe im Benutzerkontext ausführt (z.B. Row-Level Security in Azure AI Search wirksam macht). 

Dabei sind drei Elemente entscheidend: die App-Registrierung (Expose an API + API Permissions), die Bot OAuth Connection im Azure Bot Service und der OBO-Flow in der Applogik. 

 

Architekturüberblick und Rollen 

 

  1. Teams-Client: initiiert SSO und liefert das SSO-Token an den Bot. Das SSO Token muss, damit der OBO-Flow funktioniert, auf die App von der aus der Flow aufgerufen wird, ausgestellt sein.
  2. Azure Entra ID (Azure AD): stellt Tokens aus, verwaltet App-Registrierungen, Scopes und Clientautorisierungen. 
  3. Bot (Azure Bot Service + App Service): nimmt das SSO-Token entgegen, tauscht es via OBO gegen Tokens für Ziel-APIs (mit dem entsprechenden Scopes. Im Falle von AI Search: https://search.azure.com/.default). 
  4. Downstream-APIs können mit dem OBO Token verwendet werden: 
    • Microsoft Graph (z. B. Gruppenmitgliedschaftsprüfung), 
    • Azure AI Search (das Access Token wird im Header x-ms-query-source-authorization übertragen, damit Row-Level Security wirksam wird). 
    • uvm. 

Konfiguration in Azure (SSO-Grundlage) 

 

1) App-Registrierung: Expose an API 

  • Application ID URI setzen: 
    • Format: api://botid-<CLIENT_ID> 
  • Scope anlegen: 
    • Name: access_as_user 
    • Who can consent: Admins and users 
    • State: Enabled 
  • Autorisierte Clientanwendungen hinzufügen (Mindestens die Teams-Clients): 
    • Mindestens die Teams-Clients
      • 1fec8e78-bce4-4aaf-ab1b-5451cc387264 (Teams Mobile/Desktop) 
      • 5e3ce6c0-2b1f-4285-8d4b-75ee78787346 (Teams Web)
    • Scope-Zuordnung: access_as_user

Hinweis: Die autorisierten Clients verhindern wiederholte Zustimmungsprompts und stellen eine reibungslose SSO-Erfahrung sicher. 

 

2) App-Registrierung: API-Berechtigungen (Delegated) 

API Berechtigunge hinzufügen, auf welche der Bot Zugriff haben soll. Bspw.: 

  • Azure Cognitive Search: 
    • user_impersonation (Delegated) 

 Nach dem ersten Deployment ist ggf. der Admin-Consent zu erteilen, damit OBO-gestützte Graph-Aufrufe funktionieren. 

 

3) Azure Bot Service: OAuth Connection (AAD v2) 

Im Azure Bot Service muss unter Settings -> Configuration -> Add OAuth Connection Settings eine OAuth Connection registriert werden: 

  • Name: api (muss mit der App-Konfiguration im Code übereinstimmen)  
  • Service Provider: Azure Active Directory v2 
  • Client ID: Client-ID der App-Registrierung 
  • Client secret: Secret der App-Registrierung 
  • Tenant ID: common (Multi-Tenant) oder die feste Tenant-ID 
  • Token Exchange URL: api://botid-<BOT_ID> 
  • Scopes: api://botid-<BOT_ID>/access_as_user 

Diese Connection liefert das SSO-Token an die App. 

 

Codebeispiele aus der Referenzimplementierung 

 

Die folgenden Auszüge zeigen, wie ein SSO-Token empfangen und persistiert wird, ein OBO-Token für Zielressourcen bezogen wird und wie nachgelagerte APIs im Benutzerkontext aufgerufen werden. Der Bot wurde mithilfe der Teams AI Library erstellt. 

SSO Token: 

In Teams AI gibt es die Möglichkeit bestimmte Events, wie das Sign-In-Event zu subscriben. Dort lässt sich dann eine eigne Logik implementieren, um das Token bspw. in einem globalen State zu speichern. 

 

OBO-Flow:  

Um im Namen der angemeldeten Person auf Ressourcen (z. B. Azure AI Search) zuzugreifen, wird das SSO-Token per OBO-Flow gegen ein Access Token mit passendem Scope der entsprechenden Ressource (bspw.: https://search.azure.com/.default) getauscht: 

Aufruf von Downstream APIs: 

Mithilfe des erhaltenen OBO-Token lassen sich nun Downstream APIs aufrufen wie eine Vektor-Suche in Azure AI Search. Der Benutzerkontext wird über den Header x-ms-query-source-authorization an Azure AI Search übergeben. Dadurch greift Row-Level-Security anhand der im Index hinterlegten Benutzer-/Gruppen-IDs. 

Unser Fazit

 

Die korrekte Einrichtung von SSO und OBO ist die Grundlage, um in Teams-Bots sicher und nahtlos im Benutzerkontext auf Azure-Ressourcen zuzugreifen. Nur durch den On-Behalf-Of-Flow lässt sich gewährleisten, dass nachgelagerte Dienste wie Azure AI Search oder Microsoft Graph den Identitätskontext der angemeldeten Person zuverlässig auswerten und Berechtigungen auf Dokument- oder Objektebene enforced werden. Das Ergebnis ist eine saubere, sichere und benutzerzentrierte Architektur  ganz im Sinne von Least Privilege und Compliance. 

 

Sie möchten mehr infos?

Wir sind für Sie da.

Bei welchem Projekt oder welcher Herausforderung dürfen wir Sie unterstützen?
Wir sind gerne für Sie da.

 

HEIKO WESSELS

+49 89 71040920

heiko@provectus.de

 

Zum Kontaktformular

 

Wollen Sie immer up2date sein? Dann melden Sie sich jetzt zu unserem Newsletter an

Bleiben Sie auf dem Laufenden. Wir informieren Sie regelmäßig über aktuelle Trends und technologische Neuerungen sowie geplante Webinare und Events. Sie erhalten Einblick in interessante Kundenprojekte und werfen einen Blick hinter die Kulissen. Melden Sie sich jetzt an.

Zur Newsletter Anmeldung 

Alles Wissenswerte

auf einen Blick
Wofür interessieren Sie sich?
Blogbeitrag
Echt Ich
Success Story
Webinar
Whitepaper
Webinar

Vortrag: Moderne Apps brauchen moderne Plattformen: Warum der Betrieb über Ihren Erfolg entscheidet

Für alle, die beim Expert Day von Midrange verstehen wollen, warum Cloud-Projekte nicht an der Migration scheitern, sondern im Betrieb. Viele Unternehmen kämpfen danach mit steigenden Kosten, fehlender Transparenz und neuen Risiken. Der Grund: Cloud ist kein Infrastrukturthema, sondern ein Betriebsmodell mit klaren Anforderungen.
Weiterlesen
Blogbeitrag

Virtual Workplace Evolution 2026

Wir sind dabei und freuen uns auf einen spannenden Austausch zur Transformation von IT Workplaces.
Weiterlesen
Webinar

DORA-konformer Cloud-Betrieb: So setzen Sie Anforderungen praxisnah um

WEBINAR, 18.06: DORA-konformer Cloud-Betrieb praxisnah erklärt: Erfahren Sie im Webinar, wie Finanzunternehmen regulatorische Anforderungen wirksam, prüfbar und dauerhaft im IT-Betrieb umsetzen.
Weiterlesen
Blogbeitrag

Azure Arc, SQL-Updates, regionale Produktgrenze: Der MVP-Vorteil

Updates, die scheinbar laufen, aber nie ankommen. Ein Support-Ticket ohne belastbare Antwort. Und ein Betriebsproblem, das schnell zum Sicherheitsproblem werden kann. Wie ein Microsoft MVP in genau dieser Situation den entscheidenden Unterschied macht.
Weiterlesen
Blogbeitrag

Anthropic in Microsoft 365 Copilot: Warum das neue KI-Feature zum Governance-Test für Unternehmen wird 

Neue KI-Modelle in Microsoft 365 Copilot: Warum die Anthropic-Integration für Unternehmen Chancen, Pflichten und Risiken verändert.
Weiterlesen
Blogbeitrag

Azure Files im Enterprise Scale: Architektur mit Herstellervalidierung

Wenn Datenvolumina, verteilte Standorte und hybride Synchronisation zusammentreffen, reicht die Dokumentation oft nicht mehr aus. Wie eine Validierung mit der Microsoft Produktgruppe in solchen Fällen den Unterschied macht.
Weiterlesen
Webinar

Webinar – Need for Speed – wie Microsoft 365 Unternehmen in Zugzwang bringt

Für alle Unternehmen, die M365 stabil, sicher und effizient betreiben wollen. Wer souverän mit Changes umgeht, gewinnt Kontrolle und entlastet endlich das Tagesgeschäft. In diesem Webinar zeigen unsere Experten, wie Sie die Update‑Flut proaktiv statt reaktiv managen.
Weiterlesen
Blogbeitrag

Provectus und das IAMCP Business Chapter Azure Infrastruktur

Interview mit Matthias Braun über das IAMCP-Netzwerk, aktuelle Trends in der Azure Infrastruktur und den konkreten Mehrwert für Microsoft-Partner und deren Kunden.
Weiterlesen
Blogbeitrag

Citrix LAS kommt: Warum Sie jetzt handeln müssen 

Die Zeit der klassischen, dateibasierten Citrix-Lizenzierung läuft ab. Citrix hat klar kommuniziert: Am 15. April 2026 ist endgültig Schluss. Ab diesem Zeitpunkt wird ausschließlich noch der Citrix License Activation Service (LAS) unterstützt.
Weiterlesen
Webinar

Webinar – Automatisieren ohne IT-Frust: Microsoft Power Platform sicher betreiben und Potenzial nutzen

In diesem Webinar zeigen unsere Experten anhand praxisnaher Live-Demos, wie Unternehmen mit der Microsoft Power Platform Prozesse effizient automatisieren, externe Tools ersetzen und durch klare Governance sowie ein Center of Excellence einen sicheren und nachhaltigen Betrieb sicherstellen.
Weiterlesen
Jetzt Blogbeitrag teilen
Xing LinkedIn Facebook Twitter