/// <summary> /// Add Redis Operational Store. /// </summary> /// <param name="builder"></param> /// <param name="optionsBuilder">Redis Operational Store Options builder</param> /// <returns></returns> public static IIdentityServerBuilder AddOperationalStore(this IIdentityServerBuilder builder, Action <RedisOperationalStoreOptions> optionsBuilder) { var options = new RedisOperationalStoreOptions(); optionsBuilder?.Invoke(options); builder.Services.AddSingleton(options); builder.Services.AddScoped <RedisMultiplexer <RedisOperationalStoreOptions> >(); builder.Services.AddTransient <IPersistedGrantStore, PersistedGrantStore>(); return(builder); }
public PersistedGrantStore(RedisMultiplexer <RedisOperationalStoreOptions> multiplexer, ILogger <PersistedGrantStore> logger, ISystemClock clock) { if (multiplexer is null) { throw new ArgumentNullException(nameof(multiplexer)); } this.options = multiplexer.RedisOptions; this.database = multiplexer.Database; this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); this.clock = clock; }
public PersistedGrantStoreTests() { _logger = new Mock <ILogger <PersistedGrantStore> >(); _clock = new Mock <ISystemClock>(); string connectionString = ConfigurationUtils.GetConfiguration()["Redis:ConnectionString"]; var options = new RedisOperationalStoreOptions { RedisConnectionString = connectionString }; _multiplexer = new RedisMultiplexer <RedisOperationalStoreOptions>(options); _store = new PersistedGrantStore(_multiplexer, _logger.Object, _clock.Object); }
public void Multiplexer_Provided_Uses_Provided_Multiplexer() { var cacheOptions = new RedisCacheOptions() { RedisConnectionMultiplexer = new FakeConnectionMultiplexer() }; Assert.IsType <FakeConnectionMultiplexer>(cacheOptions.RedisConnectionMultiplexer); var storeOptions = new RedisOperationalStoreOptions() { RedisConnectionMultiplexer = new FakeConnectionMultiplexer() }; Assert.IsType <FakeConnectionMultiplexer>(storeOptions.RedisConnectionMultiplexer); }
public void ConnectionString_Provided_Makes_Connection() { var cacheOptions = new RedisCacheOptions() { RedisConnectionString = ConfigurationUtils.GetConfiguration()["Redis:ConnectionString"] }; Assert.IsType <StackExchange.Redis.ConnectionMultiplexer>(cacheOptions.RedisConnectionMultiplexer); var storeOptions = new RedisOperationalStoreOptions() { RedisConnectionString = ConfigurationUtils.GetConfiguration()["Redis:ConnectionString"] }; Assert.IsType <StackExchange.Redis.ConnectionMultiplexer>(storeOptions.RedisConnectionMultiplexer); }
public void Multiplexer_And_ConnectionString_Provided_Uses_Provided_Multiplexer() { var cacheOptions = new RedisCacheOptions() { RedisConnectionString = "fake", // if connection is made, this will throw RedisConnectionMultiplexer = new FakeConnectionMultiplexer() }; Assert.IsType <FakeConnectionMultiplexer>(cacheOptions.RedisConnectionMultiplexer); var storeOptions = new RedisOperationalStoreOptions() { RedisConnectionString = "fake", // if connection is made, this will throw RedisConnectionMultiplexer = new FakeConnectionMultiplexer() }; Assert.IsType <FakeConnectionMultiplexer>(storeOptions.RedisConnectionMultiplexer); }
public static IIdentityServerBuilder UseRedisGrantStore(this IIdentityServerBuilder builder, RedisOperationalStoreOptions storeOptionAction) { //var storeOption = new RedisStoreOptions(); //storeOptionAction?.Invoke(storeOption); builder.Services.AddSingleton(storeOptionAction); builder.Services.AddTransient <IGrantStoreProvider, RedisGrantStoreProvider>(); //builder.Services.AddTransient<IPersistedGrantStore, GrantStore>(); return(builder); }