public void Register(AuthenticationProvider provider) { _providerId = provider.Id.ToString(); _providerCache = new ProviderCache(); SchemeName = provider.Name; var scheme = new AuthenticationScheme(SchemeName, provider.DisplayName, typeof(NegotiateHandler)); _schemeProvider.AddScheme(scheme); var options = new NegotiateOptions(); _optionsCache.TryAdd(SchemeName, options); }
public async Task RBACClaimsRetrievedFromCacheAfterKerberosCompleted() { var claimsCache = new MemoryCache(new MemoryCacheOptions()); claimsCache.Set("name", new string[] { "CN=Domain Admins,CN=Users,DC=domain,DC=net" }); NegotiateOptions negotiateOptions = null; using var host = await CreateHostAsync(options => { options.EnableLdap(ldapSettings => { ldapSettings.Domain = "domain.NET"; ldapSettings.ClaimsCache = claimsCache; ldapSettings.EnableLdapClaimResolution = false; // This disables binding to the LDAP connection on startup }); negotiateOptions = options; }); var server = host.GetTestServer(); var testConnection = new TestConnection(); negotiateOptions.EnableLdap(_ => { }); // Forcefully re-enable ldap claims resolution to trigger RBAC claims retrieval from cache await AuthenticateAndRetrieveRBACClaims(server, testConnection); }