Example #1
0
        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);
    }