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?
Success Story
Blogbeitrag
Whitepaper
Webinar
Echt Ich
Blogbeitrag

Experts Live Germany 2026 in Leipzig: Provectus vor Ort – mit neuem Azure Managed Service.

Dann sehen wir uns am 03. März 2026 auf der EXPERTS LIVE GERMANY in Leipzig. Ein besonderes Highlight: Unser Vortrag “ 12.500 € Azure‑Kosten – und niemand merkt’s“
Weiterlesen
Blogbeitrag

Datenklassifizierung als Fundament für KI-Einsatz und Voraussetzung für NIS2, DORA & KRITIS

Datenklassifizierung ist die Basis für sichere, regelkonforme Datenverarbeitung und den sinnvollen Einsatz von KI – auch im Kontext von NIS2, DORA und KRITIS.
Weiterlesen
Webinar

12.500 € verbrannt und niemand merkt’s: So verhindern Managed Services Kostenfallen und Risiken

In diesem kostenlosen Webinar erfahren Sie, wie Azure-Kostenfallen entstehen, wie Fehlkonfigurationen frühzeitig erkannt werden und welche Betriebsstandards Managed Services dafür einsetzen.
Weiterlesen
Blogbeitrag

Datenstrategie und hohe Datenqualität: Der Schlüssel für KI, Automatisierungen & Compliance

Ohne Datenstrategie keine KI: Wie Unternehmen mit hoher Datenqualität, Governance und Datenhygiene Automatisierung ermöglichen und DSGVO, NIS2, DORA & KRITIS erfüllen.
Weiterlesen
Whitepaper

ROI messbar steigern mit M365 Copilot

Erfahren Sie, wie Sie den ROI von Microsoft Copilot berechnen und KI-Adoption in messbaren Business Value verwandeln.
Weiterlesen
Blogbeitrag

Microsoft 365: Schonfrist für abgelaufene Abonnements endet

Microsoft stellt das bisherige Modell für ablaufende Microsoft-365-Abonnements grundlegend um. Ab 01. April 2026 schafft der Konzern die bekannte kostenfreie Schonfrist ab und ersetzt sie durch ein neues Abrechnungsmodell.
Weiterlesen
Blogbeitrag

Provectus Microsoft Copilot Jumpstart: Ihre Vorteile

Provectus ist Microsoft Copilot & Agents at Work Jumpstart Ready Partner und gibt die Förderung direkt an Sie weiter. So ermöglichen wir unseren Kund:innen einen finanziell erleichterten Einstieg in Microsoft Copilot und KI-Agents.
Weiterlesen
Blogbeitrag

Hessische Beauftragte für Datenschutz und Informationssicherheit (HBDI) veröffentlichen Bericht zur datenschutzkonformen Nutzung von Microsoft 365

Der HBDI bestätigt: Microsoft 365 kann unter bestimmten Bedingungen DSGVO-konform eingesetzt werden. Der Bericht ordnet rechtliche und technische Aspekte ein.
Weiterlesen
Blogbeitrag

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

Im Entwicklungsverlauf eines Teams–Bots zeigt sich folgendes Anforderungsszenario: Der Bot soll im Kontext der angemeldeten Person auf weitere Azure–Ressourcen zugreifen.
Weiterlesen
Blogbeitrag

Unser Start ins Trainee-Programm bei Provectus 

Unsere Trainees berichten von den ersten Monaten im Provectus-Traineeprogramm, geben Einblicke in Workshops, Lernphasen und den täglichen Einsatz von KI-Tools und zeigen, wie sie auf ihre Rolle als Junior Professionals vorbereitet werden.
Weiterlesen
Jetzt Blogbeitrag teilen
Xing LinkedIn Facebook Twitter