Repository navigation
Release v22.145.0
Arc can now accept a session in which a support person or an agent acts on behalf of a user through Cratis AuthProxy: the request authorizes as the represented user, and Chronicle records the actor as the cause, on behalf of that user.
Added
- Opt-in on-behalf forwarding through
ArcOptions.OnBehalfOf(Cratis:Arc:OnBehalfOf). Arc verifies AuthProxy's signedx-cratis-on-behalf-assertionagainst the configured issuer, audience, optional service and RSA public signing keys, binds it to the forwarded identity headers, tenant and request, and refuses a replay. See Acting on behalf of a user. (#3535) - A verified on-behalf forward authenticates as the represented user with the actor from
x-cratis-on-behalf-actorasClaimsIdentity.Actor, in both the ASP.NET Core Microsoft Identity Platform scheme and theCratis.Arc.Corehandler. ClaimsPrincipal.GetActor()andClaimsPrincipal.IsActedOnBehalfOf()inCratis.Arc.Identityto read who is acting.- With Chronicle, an identity that has an actor is recorded as a
CausedBychain with the actor first and the represented user as itsOnBehalfOf, so events report an agent acting on behalf of that user. x-ms-client-principal-idvalues in the RFC 8187UTF-8''form are decoded.- An ASP.NET Core host logs an error at startup when on-behalf forwarding is enabled with configuration it cannot use.
Changed
- Requests carrying an
x-cratis-on-behalf-actororx-cratis-on-behalf-assertionheader now fail authentication unless forwarded identity headers are trusted, on-behalf forwarding is enabled and the assertion verifies. They are never authenticated as the represented user or the actor alone. - Any authentication scheme that sets
ClaimsIdentity.Actor, such as a bearer token whoseactclaim is mapped to it, now changes the identity Chronicle records: the actor becomescausedBy, on behalf of the principal. See Causation.