2017-09-25 31 views
1

Windows Redisサービス(Redis 3.0.504)をキャッシュサーバーとして使用しており、パスワードで「requirepass」変数を設定することでパスワード検証を有効にしました。初めてのパスワード確認が成功した後、もう一度パスワードを確認しないようです。

しかし、私はそれをテストすると、クライアントからのパスワード認証が成功した後、すべてのクライアントのパスワードチェックを停止しているように見えます。

私の実装では、IRedisClientへのラッパーとしてServiceStack Webサービスを使用しています。セキュリティサービスの脆弱性のためにローカルアクセスのためにredisサーバーを保持できるように、クライアントをキャッシュするためにWebサービスを公開します。

Webサービスでは、私は、Redisクライアント(IRedisClient)を取得する要求に対してPooledRedisClientManagerオブジェクトのインスタンスの依存性注入にcastle windsorを使用しています。コードは次のようになります。Webサービスのinitで

:サービスコントローラーで

container.Register<IRedisClientsManager>(c => new PooledRedisClientManager("[email protected]:6379")); 

、以下のようにRedisのクライアントを取得するために:私はRedisのであるかどうかを確認していない

public MyServiceResponse Any(MyServiceRequest request) 
{ 
    ... 
    var redisClientsManager = HostContext.Resolve<IRedisClientsManager>(); 
    using (IRedisClient redisClient = redisClientsManager.GetClient()) 
    { 
     redisClient.Password = request.Password; 
     ... 
    } 

    ... 
} 

パスワード検証を実行できない、またはソリューション/実装に欠陥または問題があります。

ありがとうございます!

答えて

0

RedisはAUTH commandでパスワードを適用します。パスワードは一度有効になると、その時点からの接続のすべてのRedis操作にアクセスできます。

ServiceStack.Redisでは、パスワードはspecified on the Connection Stringである必要があります。ここで、Redisへの新しい接続がすべて、指定されたパスワードで確実に認証されます。プールに作成された新しいRedis接続ごとに自動的に提供されるので、あなたのAppのロジックにパスワードを指定することに心配する必要はありません。

注:ServiceStackサービスでのRedisにアクセスするための推奨APIはbase.Redisプロパティを使用することで、例えば:答えを

public object Any(MyServiceRequest request) 
{ 
    ... 
    var value = Redis.GetValue(key); 
} 
+0

ありがとうmythz!私の設計はWebサービスをRedisのクライアントだけにしているようですから、WebサービスがRedisサーバーに最初から正常に接続している限り、その時点から検証されたクライアントです。また、すべての外部 "キャッシュクライアント"は、実際には、レディスではなくウェブサービスに対する "異なる"クライアントです。私の理解は正しいのですか? – StevenC

+0

@StevenCクライアントではありませんが、個々のクライアントはTCP接続を再開します。プールされたRedis Clients Managerを使用する場合、これらのredis TCP接続はバックグラウンドでプールされ(そして再利用されます。 – mythz

+0

参照してください。 PooledRedisClientManagerのインスタンスを作成し、Webサービスが稼働しているときに再利用できるように保存しています。そのため、プールされたRedisクライアントマネージャは一度接続してから接続を再利用します。私はRedisのキャッシュが新しく、毎回要求ごとに認証用のパスワードを使用したいのですが、毎回要求ごとにPooledRedisClientManagerを再作成する必要がありますか? – StevenC

関連する問題