オートログイン
#アーキテクチャ大全 #WIP
コンテキスト
毎回ログインをユーザに課すとアクティブユーザが減ることが懸念される場合は、オートログイン機能を提供する。
ソリューション
通常の認証の仕組みとは別に、オートログイン状態を表すトークンを発行する。認証が必要な領域に認証状態でないリクエストがオートログイントークン付きで送られてきた場合に、妥当性を検証し、ログイン状態とする。
https://gyazo.com/2bdbda8235f9f78419cb1afd96a49b51
このオートログインによるログイン状態と通常ログインによるログイン状態は、次に示す再認証の観点から、区別できてなくてはならない。
再認証
オートログインを実装した場合、ユーザの明示的な認証行為なしに認証状態にするので、重要なアクションの前には必ず通常のログインを実行させる。
重要なアクションとは、以下のようなものである。
個人情報を表示、変更する
金銭のやりとりが発生するトランザクション
実装
Keycloakでこれらオートログインと再認証を実装するには…
Realmの設定でRemember MeをONにする。
https://gyazo.com/7aaa4fda68faf7e2138e214644cedfae
するとログインページに、Remember meが付くようになる。
https://gyazo.com/097cb3ac1cb122f2d39ecce9d0ac1e75
こうするとCookieのセッションIDの有効期限が設定される。デフォルトだと通常ログインと同じセッション有効期間がセットされてしまうので、「Tokens」の設定で、SSO Session Idle Remember MeとSSO Session Max Remember Meを設定する。
https://gyazo.com/db8eb9eaf155c9240d3cd003ff6aa29b
これで、Remember Meをチェックしてログインしたユーザは、オートログイン状態になる。
KeyCloakではオートログインはセッションの有効期限を延ばすことで実現しているので、再認証はセッションのスタートをみて判断できる。
https://gyazo.com/c36f9dfcc520adc464cdddcfbd88553f
□だが、現時点ではセッションがある状態でログインページを表示させる方法が不明なため、標準機能では難しいかもしれない。