OpenAM 13の新機能を試してみた(2) - Stateless Session
前回に続いてOpenAM 13の新機能の紹介、その2です。今回は Stateless Sessionという新しい認証セッション方式について紹介。
従来のOpenAMの認証セッションの仕組み
Stateless Sessionの前に、従来のOpenAMの認証セッションの仕組みについて説明しておきます。
OpenAMにログインすると、その認証情報(ユーザIDなど)はセッションとしてメモリ上に保存されています。ブラウザにはデフォルトだとiPlanetDirectoryProというキー名でCookieにセッションIDが格納され、サーバ上のメモリと紐付けられてログイン状態を維持し続けます。セッション情報をサーバ側で保持するこの方式を、Stateful SessionとOpenAMでは呼んでいます。
セッションフェイルオーバー (OpenAM 10.0以前)
しかしながら、OpenAM 10.0 以前だとこの機能を利用するのはとても大変。下図はOpenAMのフォーク元のOpenSSOのドキュメントにあるものですが、セッション情報を格納するBerkeley DBとMessage Queue Brokerを用意するといった大掛かりな仕組みが必要でした。
なお、この方式のセッションフェイルオーバーの検証を2012年にSCSK社が行っています(報告書はこちら https://www.scsk.jp/lib/product/oss/pdf/oss_6.pdf )。報告書の中で、この方式について「構成要素が複雑になる、OpenAM を3台以上に増やした際にスケールするかなどの懸念もある」とコメントされています。
新しいセッションフェイルオーバー(OpenAM 10.1.0-Xpressより)
クラウド・IoT時代の新たな課題
そこでStateless Sessionですよ
出所:http://openam.forgerock.org/doc/bootstrap/admin-guide/index.html#chap-session-state
従来の方式のように、セッションフェイルオーバのためにレプリケーションを行う必要もなくなりますので、容易にスケールさせることができます。
タイムリーなことに、ForgeRockより性能を検証した情報が昨日出ました。ちょうど今開催中のIdentity Summitのセッションスライドとして公開されています。このスライドのp.15から性能に関する記述があります。
OpenAM2台構成でStateful SessionとStateless Sessionの比較を行っており、
- Stateful Session: 3000ログイン/秒
- Stateless Session:5000ログイン/秒