private static TokenIntrospectionRequest CreateTokenIntrospectionRequest( string token, HttpContext context, AuthenticationScheme scheme, OAuth2IntrospectionEvents events, OAuth2IntrospectionOptions options) { if (options.ClientSecret == null && options.ClientAssertionExpirationTime <= DateTime.UtcNow) { lock (options.AssertionUpdateLockObj) { if (options.ClientAssertionExpirationTime <= DateTime.UtcNow) { var updateClientAssertionContext = new UpdateClientAssertionContext(context, scheme, options) { ClientAssertion = options.ClientAssertion ?? new ClientAssertion() }; events.UpdateClientAssertion(updateClientAssertionContext); options.ClientAssertion = updateClientAssertionContext.ClientAssertion; options.ClientAssertionExpirationTime = updateClientAssertionContext.ClientAssertionExpirationTime; } } } return(new TokenIntrospectionRequest { Token = token, TokenTypeHint = options.TokenTypeHint, Address = options.IntrospectionEndpoint, ClientId = options.ClientId, ClientSecret = options.ClientSecret, ClientAssertion = options.ClientAssertion ?? new ClientAssertion(), ClientCredentialStyle = options.ClientCredentialStyle, AuthorizationHeaderStyle = options.AuthorizationHeaderStyle, }); }
/// <summary> /// Invoked when client assertion need to be updated. /// </summary> public virtual Task UpdateClientAssertion(UpdateClientAssertionContext context) => OnUpdateClientAssertion(context);