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,
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 } }; }
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[]
public ServerStartup(SharedContext context, string connectionString, ITestOutputHelper outputHelper) { _martenOptions = new SimpleAuthOptions { AdministratorRoleDefinition = default,
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> >()) }; }