Example #1
0
        public ServerStartup(SharedContext context, ITestOutputHelper outputHelper)
        {
            IdentityModelEventSource.ShowPII = true;
            var mockConfirmationCodeStore = new Mock <IConfirmationCodeStore>();

            mockConfirmationCodeStore.Setup(x => x.Add(It.IsAny <ConfirmationCode>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(true);
            mockConfirmationCodeStore.Setup(x => x.Remove(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(true);
            mockConfirmationCodeStore.Setup(x => x.Get(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(
                new ConfirmationCode
            {
                ExpiresIn = TimeSpan.FromDays(10).TotalSeconds,
                IssueAt   = DateTimeOffset.UtcNow,
                Subject   = "phone",
                Value     = "123"
            });
            var symmetricAlgorithm = Aes.Create();

            symmetricAlgorithm.GenerateIV();
            symmetricAlgorithm.GenerateKey();
            _options = new SimpleAuthOptions
            {
                DataProtector = _ => new SymmetricDataProtector(symmetricAlgorithm),
                AdministratorRoleDefinition = default,
Example #2
0
        public Startup(IConfiguration configuration)
        {
            _configuration = configuration;
            _ = bool.TryParse(_configuration["REDIRECT"], out var redirect);
            var salt      = _configuration["SALT"] ?? string.Empty;
            var allowHttp = bool.TryParse(_configuration["SERVER:ALLOWHTTP"], out var ah) && ah;

            _options = new SimpleAuthOptions(salt)
            {
                AllowHttp       = allowHttp,
                RedirectToLogin = redirect,
                ApplicationName = _configuration["SERVER:NAME"] ?? "SimpleAuth",
                Users           = sp => new MartenResourceOwnerStore(salt, sp.GetRequiredService <IDocumentSession>),
                Clients         =
                    sp => new MartenClientStore(sp.GetRequiredService <IDocumentSession>),
                Scopes             = sp => new MartenScopeRepository(sp.GetRequiredService <IDocumentSession>),
                AccountFilters     = sp => new MartenFilterStore(sp.GetRequiredService <IDocumentSession>),
                AuthorizationCodes =
                    sp => new RedisAuthorizationCodeStore(
                        sp.GetRequiredService <IDatabaseAsync>(),
                        TimeSpan.FromMinutes(30)),
                ConfirmationCodes =
                    sp => new RedisConfirmationCodeStore(
                        sp.GetRequiredService <IDatabaseAsync>(),
                        TimeSpan.FromMinutes(30)),
                Consents             = sp => new RedisConsentStore(sp.GetRequiredService <IDatabaseAsync>()),
                DeviceAuthorizations = sp => new MartenDeviceAuthorizationStore(sp.GetRequiredService <IDocumentSession>),
                JsonWebKeys          = sp => new MartenJwksRepository(sp.GetRequiredService <IDocumentSession>),
                Tickets = sp => new RedisTicketStore(sp.GetRequiredService <IDatabaseAsync>(), _options !.TicketLifeTime),
                Tokens  =
                    sp => new RedisTokenStore(
                        sp.GetRequiredService <IDatabaseAsync>()),
                ResourceSets   = sp => new MartenResourceSetRepository(sp.GetRequiredService <IDocumentSession>),
                EventPublisher = sp => new LogEventPublisher(sp.GetRequiredService <ILogger <LogEventPublisher> >()),
                ClaimsIncludedInUserCreation = new[]
                {
                    ClaimTypes.Name,
                    ClaimTypes.Uri,
                    ClaimTypes.Country,
                    ClaimTypes.DateOfBirth,
                    ClaimTypes.Email,
                    ClaimTypes.Gender,
                    ClaimTypes.GivenName,
                    ClaimTypes.Locality,
                    ClaimTypes.PostalCode,
                    ClaimTypes.Role,
                    ClaimTypes.StateOrProvince,
                    ClaimTypes.StreetAddress,
                    ClaimTypes.Surname
                }
            };
        }
Example #3
0
        public Startup(IConfiguration configuration)
        {
            _configuration = configuration;
            _ = bool.TryParse(_configuration["REDIRECT"], out var redirect);
            var salt = _configuration["SALT"] ?? string.Empty;

            _options = new SimpleAuthOptions(salt)
            {
                AllowHttp       = true,
                RedirectToLogin = redirect,
                ApplicationName = _configuration["SERVER_NAME"] ?? "SimpleAuth",
                Users           = sp => new InMemoryResourceOwnerRepository(salt, DefaultConfiguration.GetUsers(salt)),
                Tickets         = sp => new InMemoryTicketStore(),
                Clients         =
                    sp => new InMemoryClientRepository(
                        sp.GetRequiredService <IHttpClientFactory>(),
                        sp.GetRequiredService <IScopeStore>(),
                        sp.GetRequiredService <ILogger <InMemoryClientRepository> >(),
                        DefaultConfiguration.GetClients()),
                Scopes       = sp => new InMemoryScopeRepository(DefaultConfiguration.GetScopes()),
                ResourceSets =
                    sp => new InMemoryResourceSetRepository(
                        new[]
Example #4
0
 public ServerStartup(SharedContext context, string connectionString, ITestOutputHelper outputHelper)
 {
     _martenOptions = new SimpleAuthOptions
     {
         AdministratorRoleDefinition = default,
Example #5
0
        public Startup(IConfiguration configuration)
        {
            _configuration = configuration;
            _ = bool.TryParse(_configuration[ConfigurationValues.ServerRedirect], out var redirect);
            var allowHttp = bool.TryParse(_configuration[ConfigurationValues.AllowHttp], out var ah) && ah;
            var salt      = _configuration["SALT"] ?? string.Empty;
            Func <IServiceProvider, IDataProtector>?dataProtector =
                !string.IsNullOrWhiteSpace(_configuration["IV"]) && !string.IsNullOrWhiteSpace(_configuration["KEY"])
                    ? _ =>
            {
                var symmetricAlgorithm = Aes.Create();
                symmetricAlgorithm.IV      = Convert.FromBase64String(_configuration["IV"]);
                symmetricAlgorithm.Key     = Convert.FromBase64String(_configuration["KEY"]);
                symmetricAlgorithm.Padding = PaddingMode.ISO10126;
                return(new SymmetricDataProtector(symmetricAlgorithm));
            }
            : null;

            _options =
                new
                SimpleAuthOptions(
                    salt,
                    ticketLifetime: TimeSpan.FromDays(7),
                    claimsIncludedInUserCreation: new[]
            {
                ClaimTypes.Name,
                ClaimTypes.Uri,
                ClaimTypes.Country,
                ClaimTypes.DateOfBirth,
                ClaimTypes.Email,
                ClaimTypes.Gender,
                ClaimTypes.GivenName,
                ClaimTypes.Locality,
                ClaimTypes.PostalCode,
                ClaimTypes.Role,
                ClaimTypes.StateOrProvince,
                ClaimTypes.StreetAddress,
                ClaimTypes.Surname
            })
            {
                DataProtector      = dataProtector,
                AllowHttp          = allowHttp,
                RedirectToLogin    = redirect,
                ApplicationName    = _configuration[ConfigurationValues.ServerName] ?? "SimpleAuth",
                Users              = sp => new MartenResourceOwnerStore(salt, sp.GetRequiredService <IDocumentSession>),
                Clients            = sp => new MartenClientStore(sp.GetRequiredService <IDocumentSession>),
                Scopes             = sp => new MartenScopeRepository(sp.GetRequiredService <IDocumentSession>),
                AccountFilters     = sp => new MartenFilterStore(sp.GetRequiredService <IDocumentSession>),
                AuthorizationCodes =
                    sp => new MartenAuthorizationCodeStore(sp.GetRequiredService <IDocumentSession>),
                ConfirmationCodes =
                    sp => new MartenConfirmationCodeStore(sp.GetRequiredService <IDocumentSession>),
                DeviceAuthorizations = sp => new MartenDeviceAuthorizationStore(sp.GetRequiredService <IDocumentSession>),
                Consents             = sp => new MartenConsentRepository(sp.GetRequiredService <IDocumentSession>),
                JsonWebKeys          = sp => new MartenJwksRepository(sp.GetRequiredService <IDocumentSession>),
                Tickets        = sp => new MartenTicketStore(sp.GetRequiredService <IDocumentSession>),
                Tokens         = sp => new MartenTokenStore(sp.GetRequiredService <IDocumentSession>),
                ResourceSets   = sp => new MartenResourceSetRepository(sp.GetRequiredService <IDocumentSession>),
                EventPublisher = sp =>
                                 new LogEventPublisher(sp.GetRequiredService <ILogger <LogEventPublisher> >())
            };
        }