Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
 public DynamicProviderUpdatedEvent(DynamicProviderUpdateType updateType, ISchemeDefinition schemeDefinition)
 {
     UpdateType = updateType;
     SchemeDefinition = schemeDefinition;
 }