Autentisering⚓︎
Oversikt⚓︎
Kai bruker JWT Bearer-autentisering med støtte for to token-utstedere:
- Azure Bot Service (ABS) — Tokens fra Teams-kanalen via Bot Framework
- Azure Entra ID — Tokens fra direkte API-klienter
graph LR
Teams[Microsoft Teams] -->|ABS token| Host[Kai Host]
API[API-klient] -->|Entra ID token| Host
Host --> Validate{Issuer?}
Validate -->|api.botframework.com| ABS[ABS OpenID metadata]
Validate -->|login.microsoftonline.com| Entra[Entra ID OpenID metadata]
Token-validering⚓︎
AddAgentAspNetAuthentication() i AspNetExtensions.cs konfigurerer JWT-validering:
| Parameter | Verdi |
|---|---|
ValidateIssuer |
true |
ValidateAudience |
true |
ValidateLifetime |
true |
ClockSkew |
5 minutter |
RequireSignedTokens |
true |
Issuer-deteksjon⚓︎
I OnMessageReceived-eventet inspiseres JWT-tokenet for å finne iss-claimet:
- Hvis issuer er
https://api.botframework.com→ bruk ABS OpenID metadata-endepunkt - Ellers → bruk Entra ID OpenID metadata-endepunkt
Metadata-konfigurasjoner caches i en ConcurrentDictionary for ytelse.
Autorisasjon⚓︎
AllowedCallers-policyen kontrollerer hvilke applikasjoner som kan kalle Kai:
["*"]→ Alle tillatt (standard)- Liste med App ID-er → Kun disse tillatt
- ABS-tokens tillates alltid (Bot Framework-trafikk)
For Entra ID-tokens sjekkes azp (authorized party) eller appid-claimet mot listen.
Konfigurasjon⚓︎
| appsettings.json | |
|---|---|
X-Forwarded-Prefix
Kai kjører bak Azure API Management (APIM). Middleware i Program.cs håndterer X-Forwarded-Prefix-headeren for korrekt path-basert ruting.