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