public static IApplicationBuilder UseBasicAuthentication(this IApplicationBuilder app, IContainerResolve container, BasicAuthenticationContextOption option) { if (null == app) { throw new ArgumentNullException(nameof(app)); } if (null == option) { throw new ArgumentNullException(nameof(option)); } return(app.UseMiddleware <BasicAuthenticationMiddleware>(option)); }
public BasicAuthenticationMiddleware(RequestDelegate next, IContainerResolve container, BasicAuthenticationContextOption option) { _next = next ?? throw new ArgumentNullException(nameof(next)); if (null == container) { throw new ArgumentNullException(nameof(container)); } if (null == option) { throw new ArgumentNullException(nameof(option)); } if (null == option.Settings) { throw new ArgumentNullException("Settings defined in option cannot be null."); } _logger = container.Resolve <ILogger <BasicAuthenticationMiddleware> >(); if (!string.IsNullOrEmpty(option.DefaultUpn)) { if (!Regex.IsMatch(option.DefaultUpn, @"^@([a-zA-Z0-9]+\.[a-zA-Z0-9]+)")) { _logger.Technical().Warning($"Bad upn format, we expect a @ and one point.").Log(); option.DefaultUpn = string.Empty; } else { _logger.Technical().Information($"Default upn: {option.DefaultUpn}.").Log(); } } if (option.Settings.Values.ContainsKey(TokenKeys.ProviderIdKey)) { _hasProvider = container.TryResolve(option.Settings.Values[TokenKeys.ProviderIdKey], out _provider); if (!_hasProvider) { _logger.Technical().Error($"No token provider was found with resolution name equal to: {option.Settings.Values[TokenKeys.ProviderIdKey]}.").Log(); } } else { _logger.Technical().Error($"No token provider resolution name is defined in your settings!").Log(); } if (!_hasProvider) { _logger.Technical().Error($"Basic Authentication capability is deactivated!").Log(); } if (!container.TryResolve(out _tokenCache)) { _logger.Technical().Error($"No token ache are defined for Basic Authentication.").Log(); } _option = option; _container = container; _activitySource = container.Resolve <IActivitySourceFactory>()?.GetArc4u(); }