マイクロサービスアーキテクチャにまともな/安全な認証戦略を選択するのに苦労しています。このトピックで私が見つけた唯一のSO投稿はこれです:マイクロサービスアーキテクチャでのシングルサインオン
ここでの私の考えは、各サービス(たとえば、認証、メッセージング、通知、プロファイルなど)で各ユーザーへの一意の参照(論理的には彼のuser_id
)と、id
ログインした場合に現在のユーザーの固有の参照を取得することです。
私の研究から、2つの可能な戦略があることがわかります。
1.共有アーキテクチャ
この戦略では、認証アプリは他のサービスの1つです。しかし、各サービスは変換を行うことができる必要がありますsession_id
=> user_id
したがって、非常にシンプルでなければなりません。それが私がRedisを考えた理由です、それがkey:valueを保存するでしょうsession_id:user_id
。
2.ファイアウォールアーキテクチャ
この戦略では、認証アプリによってのみ処理されるため、セッションストレージはそれほど重要ではありません。その後、user_id
他のサービスに転送できます。Rails + Devise(+ Redisまたはmem-cached、またはcookieストレージなど)について考えましたが、可能性はたくさんあります。重要なのは、Service Xがユーザーを認証する必要がないことです。
これらの2つのソリューションは、次の点でどのように比較されますか。
- 安心
- 堅牢性
- スケーラビリティ
- 使いやすさ
それとも、ここで言及していない別の解決策を提案するでしょうか?
私はソリューション1の方が好きですが、私が正しい方向に進んでいるという事実で私を保護するデフォルトの実装をあまり見つけていません。
私の質問が閉じられないことを願っています。他にどこに質問すればいいのか本当にわからない。
前もって感謝します