Spring Securityで、同一ドメインにて別セッションでログイン管理をする方法

こんにちは。 エキサイト株式会社の三浦です。

Spring Securityでセッションを使ってログイン管理をする場合、基本的にはドメイン単位でセッションが分かれます。

今回は、同一ドメインにて別セッションでログイン管理する方法を説明します。

1. プロジェクトを分ける

まずは、セッションを分けたいサービス同士を別プロジェクトとして作成します。

Nginx等のプロキシを使って、同一ドメインにアクセスが来てもパスなどをもとにリクエストが振り分けられるようにしておきましょう。

2. セッション用Cookie名を別々にする

次に、セッション用のCookie名を別のものにします。

この設定が肝で、これによって同一ドメインでも別セッションとして管理できるようになります。

Spring SecurityをMVCで扱っていれば、 application.yml に以下の設定を書くだけでCookie名を変更することができます。

server:
  servlet:
    session:
      cookie:
        name: CUSTOM_COOKIE_NAME

spring.pleiades.io

セッションを分けたいプロジェクト間で、別々の名前を設定しましょう。

これで、同一ドメインでも別のログインセッションとして扱われるようになりました!

終わりに

同一ドメインで別セッションのログイン管理をしたい、という需要はそこまで多くないと思いますが、いざそうなった時に使える情報ではないでしょうか。

またそれ以外にも、何かしらの事情でセッション用のCookie名を変えたい場合にも使えるでしょう。

そういった際に、何かしらの役に立てば幸いです!