Пример #1
0
        public AuthorizedTestFixture(Auth0Settings auth0Settings = null, TestTokenService tokenService = null, TestHttpMessageHandler httpMessageHandler = null, IServiceCollection serviceCollection = null)
        {
            var auth0SettingsOrDefault      = auth0Settings ?? GetDefaultAuth0Settings();
            var tokenServiceOrDefault       = tokenService ?? GetDefaultTokenService(auth0SettingsOrDefault);
            var httpMessageHandlerOrDefault = httpMessageHandler ?? GetDefaultHttpMessageHandler();

            httpMessageHandlerOrDefault.ConfigureFakeAuth0Authority(auth0SettingsOrDefault, tokenServiceOrDefault);

            var webHostBuilder = new WebHostBuilder()
                                 .UseStartup <TStartup>()
                                 .ConfigureServices(services =>
            {
                services.Configure <Auth0Settings>(settings =>
                {
                    settings.Auth0ClientId = auth0SettingsOrDefault.Auth0ClientId;
                    settings.Auth0Domain   = auth0SettingsOrDefault.Auth0Domain;
                });
                services.AddSingleton <IHttpMessageHandlerAccessor>(provider => new HttpMessageHandlerAccessor(httpMessageHandlerOrDefault));

                if (serviceCollection != null)
                {
                    services.Add(serviceCollection);
                }
            });

            var server = new TestServer(webHostBuilder);

            HttpClient   = server.CreateClient();
            TokenService = tokenServiceOrDefault;
        }
Пример #2
0
        public static void ConfigureFakeAuth0Authority(
            this TestHttpMessageHandler testHttpMessageHandler,
            Auth0Settings appSettings,
            TestTokenService tokenService)
        {
            var jwksUri = new Uri(new Uri(appSettings.Auth0Domain), WellKnownJwks);

            testHttpMessageHandler.PushGetResponse(
                jwksUri,
                HttpStatusCode.OK,
                new Jwks
            {
                Keys = new List <Key>
                {
                    new Key
                    {
                        Alg = "RS256",
                        Kty = "RSA",
                        Use = "sig",
                        X5C = new List <string>
                        {
                            tokenService.GetSigningKey()
                        }
                    }
                }
            },
                true
                );

            testHttpMessageHandler.PushGetResponse(
                new Uri(new Uri(appSettings.Auth0Domain), WellKnownOpenIdConfiguartion),
                HttpStatusCode.OK,
                new OpenIdConfiguration
            {
                Issuer  = appSettings.Auth0Domain,
                JwksUri = jwksUri,
                IdTokenSigningAlgValuesSupported = new List <string>
                {
                    "RS256"
                }
            },
                true
                );
        }