Gå til innhold

ADR-005: Dual autentisering (Bot Framework + Entra ID)⚓︎

Kontekst⚓︎

Kai mottar trafikk fra to kilder: 1. Microsoft Teams via Azure Bot Service — sender tokens utstedt av Bot Framework 2. Direkte API-klienter — sender standard Entra ID JWT-tokens

Disse to token-typene har forskjellige issuere og OpenID metadata-endepunkter.

Beslutning⚓︎

Vi implementerer dynamisk issuer-deteksjon i OnMessageReceived-eventet: - JWT-tokenet inspiseres for iss-claimet - Hvis issuer er https://api.botframework.com → bruk ABS OpenID metadata - Ellers → bruk Entra ID OpenID metadata - Metadata-konfigurasjoner caches i ConcurrentDictionary

AllowedCallers-policy kontrollerer hvilke applikasjoner som kan kalle Kai. ABS-tokens tillates alltid.

Alternativ vurdert⚓︎

Separate autentiseringsskjemaer: Registrere to JWT Bearer-skjemaer med forskjellige authority-URLer. Forkastet fordi token-typen ikke er kjent for tokenet er mottatt.

Konsekvenser⚓︎

Positive: - En autentiseringsflyt handterer begge token-typer - Bot Framework-trafikk valideres korrekt - Entra ID gir standard OAuth2-flyt for direkte API-tilgang

Avveininger: - JWT ma parses to ganger (forst for issuer-deteksjon, sa for full validering) - OpenID metadata-cache vokser aldri — ingen eviction-strategi