public void ConfigureProxy(IServiceCollection services) { services.AddScoped <IProxyApplicationService, ProxyApplicationService>(); services.AddSingleton <KerberosIdentityService>(); services.AddSingleton <IAuthenticatorProvider, AuthenticatorProvider>(); services.AddSingleton <IClaimsProviderProvider, ClaimsProviderProvider>(); services.AddMemoryCache(); foreach (var application in _proxyOptions.Applications) { services.AddHttpClient(application.Name).ConfigureHttpMessageHandlerBuilder(builder => { var proxyBuilder = new ProxyMessageHandlerBuilder(builder); var authenticatorProvider = builder.Services.GetService <IAuthenticatorProvider>(); foreach (var authenticator in authenticatorProvider[application.Name]) { authenticator.Configure(proxyBuilder); } proxyBuilder.PostConfigure(); }) .ConfigureHttpClient(client => { client.BaseAddress = application.Destination; }); } services.AddHostFiltering(options => { options.AllowedHosts = _proxyOptions.Applications.Select(x => x.Host.Value.Value).ToArray(); }); }
public void Configure(ProxyMessageHandlerBuilder builder) { builder.AuthenticatorHandlers.Add(new HeadersHandler() { Authenticator = this }); }
public void Configure(ProxyMessageHandlerBuilder builder) { EnableUseDefaultKerberosCredentials(builder.PrimaryAuthenticatedHandler); if (_bindingOptions.SendAnonymousRequestAsService) { EnableUseDefaultKerberosCredentials(builder.PrimaryAnonymousHandler); } builder.AuthenticatorHandlers.Add(new KerberosHandler() { Options = _options, IdentityService = builder.Services.GetService <KerberosIdentityService>() }); }