/// <summary> /// Adds a scheme asynchronously. /// </summary> /// <param name="definition">The definition.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns></returns> /// <exception cref="ArgumentNullException">definition</exception> public virtual async Task AddAsync(ISchemeDefinition definition, CancellationToken cancellationToken = default) { definition = definition ?? throw new ArgumentNullException(nameof(definition)); var handlerType = definition.HandlerType; var optionsType = GetOptionsType(handlerType); var optionsMonitorCache = _wrapperFactory.Get(optionsType); var scheme = definition.Scheme; if (await _schemeProvider.GetSchemeAsync(scheme).ConfigureAwait(false) != null) { _schemeProvider.RemoveScheme(scheme); optionsMonitorCache.TryRemove(scheme); } _schemeProvider.AddScheme(new AuthenticationScheme(scheme, definition.DisplayName, handlerType)); optionsMonitorCache.TryAdd(scheme, definition.Options); }
public DynamicProviderUpdatedEvent(DynamicProviderUpdateType updateType, ISchemeDefinition schemeDefinition) { UpdateType = updateType; SchemeDefinition = schemeDefinition; }