Enterprise Generative Search — Azure and Open Source · View 37 of 41 · Assurance
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.