예제 #1
0
        private void WhenIFindTheUrl()
        {
            var source = new MemoryConfigurationSource();

            source.InitialData = _data;
            var provider = new MemoryConfigurationProvider(source);

            _config = new ConfigurationRoot(new List <IConfigurationProvider>()
            {
                provider
            });
            _baseUrlFinder = new BaseUrlFinder(_config);
            _result        = _baseUrlFinder.Find();
        }
        private static void AddIdentityServer(IIdentityServerConfiguration identityServerConfiguration, IAdministrationPath adminPath, IOcelotBuilder builder, IConfiguration configuration)
        {
            builder.Services.TryAddSingleton <IIdentityServerConfiguration>(identityServerConfiguration);
            var identityServerBuilder = builder.Services
                                        .AddIdentityServer(o =>
            {
                o.IssuerUri = "Ocelot";
                o.EmitStaticAudienceClaim = true;
            })
                                        .AddInMemoryApiScopes(ApiScopes(identityServerConfiguration))
                                        .AddInMemoryApiResources(Resources(identityServerConfiguration))
                                        .AddInMemoryClients(Client(identityServerConfiguration));

            var urlFinder            = new BaseUrlFinder(configuration);
            var baseSchemeUrlAndPort = urlFinder.Find();

            JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();

            builder.Services
            .AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme)
            .AddJwtBearer("Bearer", options =>
            {
                options.Authority            = baseSchemeUrlAndPort + adminPath.Path;
                options.RequireHttpsMetadata = identityServerConfiguration.RequireHttps;

                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateAudience = false,
                };
            });

            //todo - refactor naming..
            if (string.IsNullOrEmpty(identityServerConfiguration.CredentialsSigningCertificateLocation) || string.IsNullOrEmpty(identityServerConfiguration.CredentialsSigningCertificatePassword))
            {
                identityServerBuilder.AddDeveloperSigningCredential();
            }
            else
            {
                //todo - refactor so calls method?
                var cert = new X509Certificate2(identityServerConfiguration.CredentialsSigningCertificateLocation, identityServerConfiguration.CredentialsSigningCertificatePassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);
                identityServerBuilder.AddSigningCredential(cert);
            }
        }
예제 #3
0
        private static void AddIdentityServer(this IServiceCollection services, IIdentityServerConfiguration identityServerConfiguration, IConfigurationRoot configurationRoot)
        {
            services.TryAddSingleton <IIdentityServerConfiguration>(identityServerConfiguration);
            services.TryAddSingleton <IHashMatcher, HashMatcher>();
            var identityServerBuilder = services
                                        .AddIdentityServer(o => {
                o.IssuerUri = "Ocelot";
            })
                                        .AddInMemoryApiResources(Resources(identityServerConfiguration))
                                        .AddInMemoryClients(Client(identityServerConfiguration))
                                        .AddResourceOwnerValidator <OcelotResourceOwnerPasswordValidator>();

            //todo - refactor a method so we know why this is happening
            var whb                  = services.First(x => x.ServiceType == typeof(IWebHostBuilder));
            var urlFinder            = new BaseUrlFinder((IWebHostBuilder)whb.ImplementationInstance);
            var baseSchemeUrlAndPort = urlFinder.Find();

            JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();

            services.AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme)
            .AddIdentityServerAuthentication(o =>
            {
                var adminPath          = configurationRoot.GetValue("GlobalConfiguration:AdministrationPath", string.Empty);
                o.Authority            = baseSchemeUrlAndPort + adminPath;
                o.ApiName              = identityServerConfiguration.ApiName;
                o.RequireHttpsMetadata = identityServerConfiguration.RequireHttps;
                o.SupportedTokens      = SupportedTokens.Both;
                o.ApiSecret            = identityServerConfiguration.ApiSecret;
            });

            //todo - refactor naming..
            if (string.IsNullOrEmpty(identityServerConfiguration.CredentialsSigningCertificateLocation) || string.IsNullOrEmpty(identityServerConfiguration.CredentialsSigningCertificatePassword))
            {
                identityServerBuilder.AddDeveloperSigningCredential();
            }
            else
            {
                //todo - refactor so calls method?
                var cert = new X509Certificate2(identityServerConfiguration.CredentialsSigningCertificateLocation, identityServerConfiguration.CredentialsSigningCertificatePassword);
                identityServerBuilder.AddSigningCredential(cert);
            }
        }
예제 #4
0
        private void AddIdentityServer(IIdentityServerConfiguration identityServerConfiguration, IAdministrationPath adminPath)
        {
            _services.TryAddSingleton <IIdentityServerConfiguration>(identityServerConfiguration);
            _services.TryAddSingleton <IHashMatcher, HashMatcher>();
            var identityServerBuilder = _services
                                        .AddIdentityServer(o => {
                o.IssuerUri = "Ocelot";
            })
                                        .AddInMemoryApiResources(Resources(identityServerConfiguration))
                                        .AddInMemoryClients(Client(identityServerConfiguration));

            var urlFinder            = new BaseUrlFinder(_configurationRoot);
            var baseSchemeUrlAndPort = urlFinder.Find();

            JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();


            _services.AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme)
            .AddIdentityServerAuthentication(o =>
            {
                o.Authority            = baseSchemeUrlAndPort + adminPath.Path;
                o.ApiName              = identityServerConfiguration.ApiName;
                o.RequireHttpsMetadata = identityServerConfiguration.RequireHttps;
                o.SupportedTokens      = SupportedTokens.Both;
                o.ApiSecret            = identityServerConfiguration.ApiSecret;
            });

            //todo - refactor naming..
            if (string.IsNullOrEmpty(identityServerConfiguration.CredentialsSigningCertificateLocation) || string.IsNullOrEmpty(identityServerConfiguration.CredentialsSigningCertificatePassword))
            {
                identityServerBuilder.AddDeveloperSigningCredential();
            }
            else
            {
                //todo - refactor so calls method?
                var cert = new X509Certificate2(identityServerConfiguration.CredentialsSigningCertificateLocation, identityServerConfiguration.CredentialsSigningCertificatePassword);
                identityServerBuilder.AddSigningCredential(cert);
            }
        }
예제 #5
0
 private void WhenIFindTheUrl()
 {
     _result = _baseUrlFinder.Find();
 }