21
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Remember-Me認証とSpringSecurity

Posted at

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認証用のパラメータを設定する
  1. SpringSecurityの設定

<remember-me>要素を追加します。

applicationContext-security.xml
<?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名
  1. ログイン画面の設定

次の例は、一番よくあるチェックボックスの例です。

login.html
<input type="checkbox" name="_spring_security_remember_me" id="_spring_security_remember_me" /> ログイン情報を記憶する

name属性、id属性は同じにしていますが必須ではありません。 パラメータ名であるname属性をSpringSecurityのremember-me-parameterに合わせます。

21
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?