Exemple #1
0
            public void SetsThePassword(NonEmptyString passwordString)
            {
                var email     = Email.Empty;
                var password  = Password.From(passwordString.Get);
                var parameter = CredentialsParameter.With(email, password);

                ViewModel.Prepare(parameter);

                ViewModel.Password.Should().Be(password);
            }
Exemple #2
0
            public void SetsThePassword(NonEmptyString passwordString)
            {
                var viewModel      = CreateViewModel();
                var email          = Email.Empty;
                var password       = Password.From(passwordString.Get);
                var parameter      = CredentialsParameter.With(email, password);
                var expectedValues = new[] { Password.Empty.ToString(), password.ToString() };
                var actualValues   = new List <string>();

                viewModel.Password.Subscribe(actualValues.Add);

                viewModel.Prepare(parameter);

                TestScheduler.Start();
                CollectionAssert.AreEqual(expectedValues, actualValues);
            }
Exemple #3
0
            public void SetsTheEmail(NonEmptyString emailString)
            {
                var viewModel = CreateViewModel();
                var email = Email.From(emailString.Get);
                var password = Password.Empty;
                var parameter = CredentialsParameter.With(email, password);
                var expectedValues = new[] { Email.Empty.ToString(), email.TrimmedEnd().ToString() }.Distinct();
                var actualValues = new List <string>();

                viewModel.Email.Subscribe(actualValues.Add);

                viewModel.Initialize(parameter);

                TestScheduler.Start();
                CollectionAssert.AreEqual(expectedValues, actualValues);
            }
        public void ConfigureServices(IServiceCollection services)
        {
            var path        = Path.Combine(Directory.GetCurrentDirectory(), "credentials.json");
            var credentials = new CredentialsParameter();

            if (File.Exists(path))
            {
                credentials = JsonConvert.DeserializeObject <CredentialsParameter>(File.ReadAllText(path));
            }

            var migrationsAssembly = typeof(OpenIdStartup).GetTypeInfo().Assembly.GetName().Name;
            var issuerSigningKey   = ExtractIssuerSigningKey("openid_key.txt");

            services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()
                                                          .AllowAnyMethod()
                                                          .AllowAnyHeader()));
            services.AddMvc(option =>
            {
                option.EnableEndpointRouting = false;
                option.Filters.Add(typeof(ExceptionFilter));
            }).AddNewtonsoftJson();
            services.AddAuthorization(opts => opts.AddDefaultOAUTHAuthorizationPolicy());
            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie()
            .AddCookie(SIDOpenIdConstants.ExternalAuthenticationScheme)
            .AddJwtBearer(OAuth.Constants.AuthenticationScheme, cfg =>
            {
                cfg.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
                {
                    ValidAudiences = new List <string>
                    {
                        "humanTaskClient",
                        "gatewayClient",
                        "provisioningClient"
                    },
                    ValidateIssuer           = false,
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = issuerSigningKey
                };
            })
            .AddCertificate(o =>
            {
                o.RevocationFlag = X509RevocationFlag.EntireChain;
                o.RevocationMode = X509RevocationMode.NoCheck;
            });
            services.AddCommonSID();
            services.AddSIDOpenID(opt =>
            {
                opt.IsLocalhostAllowed              = true;
                opt.IsRedirectionUrlHTTPSRequired   = false;
                opt.IsInitiateLoginUriHTTPSRequired = true;
            }, opt =>
            {
                opt.MtlsEnabled   = true;
                opt.DefaultScopes = new List <string>
                {
                    SIDOpenIdConstants.StandardScopes.Profile.Name,
                    SIDOpenIdConstants.StandardScopes.Email.Name,
                    SIDOpenIdConstants.StandardScopes.Address.Name,
                    SIDOpenIdConstants.StandardScopes.Phone.Name,
                    SIDOpenIdConstants.StandardScopes.OfflineAccessScope.Name
                };
            }, massTransitOptions: opt =>
            {
                opt.UsingRabbitMq((c, t) =>
                {
                    var connectionString = _configuration["RabbitMQ"];
                    if (!string.IsNullOrWhiteSpace(connectionString))
                    {
                        t.Host(connectionString);
                    }
                });
            })
            .AddOpenIDEF(opt =>
            {
                opt.UseSqlServer(_configuration.GetConnectionString("OpenId"), o => o.MigrationsAssembly(migrationsAssembly));
            })
            .AddLoginPasswordAuthentication()
            .AddSMSAuthentication()
            .AddEmailAuthentication(opts =>
            {
                opts.SmtpUserName = credentials.Login;
                opts.SmtpPassword = credentials.Password;
                opts.FromEmail    = credentials.Login;
            })
            .AddDynamicAuthenticationProviders();
            // ConfigureFireBase();
            services.AddDataProtection()
            .PersistKeysToFileSystem(new DirectoryInfo(Directory.GetCurrentDirectory()));
            services.Configure <ForwardedHeadersOptions>(options =>
            {
                options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
            });
        }