Enterprise Generative Search — Azure and Open Source  ·  View 37 of 41  ·  Assurance

Identity and Authorisation

Sixteen messages from a login to a filtered query, with no application identity anywhere in them.

Editable source SVG draw.io All views
User Client App Entra ID API Management Search Gateway Entitlement Resolver Azure AI Search Audit Log 1. opens search 2. authorisation code with PKCE 3. access token, 60 min 4. POST /v1/answer with the user token 5. validate signature, audience, quota 6. forwarded with the caller identity 7. on-behalf-of exchange 8. downstream token for Graph 9. resolve entitlements 10. transitive group membership 11. object ids, cached 60 s 12. group set and ACL fingerprint 13. query with acl filter and classification ceiling 14. only permitted chunks 15. principal, query, evidence ids 16. answer the caller was entitled to Identity and Authorisation — Who Proves What, to Whom, in What Order There is no service identity that can read content on a user's behalf. If the on-behalf-of exchange fails, the request fails; it never falls back to an application identity. v 1.0 · owner Data and AI Global Practice

The decision

  • There is no service identity that can read content on a user's behalf. If the on-behalf-of exchange fails, the request fails; it never falls back to an application identity with broader access.
  • The group set is expanded transitively and cached for 60 seconds, keyed by principal. The cache is the reason expansion is not on the critical path of every query, and the 60 seconds is the entitlement latency in view 20.
  • The filter is composed server-side from the resolved group set. A client can express a scope preference; it can never express an entitlement.

Numbers

  • Access tokens 60 minutes, refresh handled by the client; on-behalf-of tokens are request-scoped and never cached beyond the request.
  • Group expansion 40 ms P95 warm, 260 ms cold; median group set 34 object ids; the audit record is written before the answer is returned.

Risks

  • Entra ID is a hard dependency with no local fallback, by design. An identity outage is a full outage, which was accepted rather than mitigated with cached entitlements.
  • Deeply nested groups can produce large group sets that slow the filter. Sets above 400 object ids are alerted on and handled with a source-side entitlement check instead.