Remember-Me認証とは
Remember-Me認証とは、ログインしたアプリケーションを閉じて、再度ブラウザを開いてアプリケーションを利用するときに、ユーザIDとパスワードを再入力することなく認証を行い、ログイン完了とする仕組みです。
ログイン画面で「ログイン情報を記憶する」などのメッセージとともに並んでいるチェックボックスを見かけます。このチェックボックスを含めた認証機構をRemember-Me認証と呼びます。
Remember-Me認証は、Cookieを発行して行う
Remember-Me認証を利用した認証をすると、認証用のCookieをブラウザへ発行します。このCookieにはたいてい有効期限がついており、アプリケーションの利用頻度や利用ユーザ数から決定します。
当然セキュリティレベルは低くなりますので、PCを使う環境や条件を考えた上で検討するとよいでしょう。
SpringSecurity4での設定方法
SpringSecurity4でRemember-ME認証を有効にするには、以下の手順だけです。
- SpringSecurityの設定にて、<http>要素の子要素に <remember-me> 要素を記述する
- ログイン画面にRemember-Me認証用のパラメータを設定する
- SpringSecurityの設定
<remember-me>要素を追加します。
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans
xmlns:sec="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd">
<sec:http auto-config='true'>
<sec:remember-me
remember-me-cookie="sample-rememberme-token"
remember-me-parameter="_spring_security_remember_me"
token-validity-seconds="#{7*24*60*60}"
use-secure-cookie="true"
authentication-success-handler-ref="successHandler" />
</sec:http>
</beans:beans>
<remember-me>要素の属性については次の通り。いずれも必須ではありませんが、remember-me-cookieとremember-me-parameterは設定しておきましょう。
属性名 | 設定内容 |
---|---|
remember-me-cookie | 発行するCookie名 |
remember-me-parameter | ログイン画面でRemember-Me認証を有効にするリクエストパラメータ名 |
token-validity-seconds | Remember-Me認証で発行したCookieの有効時間(秒) |
use-secure-cookie | HTTPSのみRemember-Me認証を有効にする場合にtrueを設定 |
authentication-success-handler-ref | 認証完了後の処理を実装するSpringBeans名 |
- ログイン画面の設定
次の例は、一番よくあるチェックボックスの例です。
<input type="checkbox" name="_spring_security_remember_me" id="_spring_security_remember_me" /> ログイン情報を記憶する
name属性、id属性は同じにしていますが必須ではありません。 パラメータ名であるname属性をSpringSecurityのremember-me-parameterに合わせます。