SSOクライアントの作成(1)
2008/11/21:この記事にあるOpenSSOはかなり古いものです。最近のものを使う際の参考にはならないかもしれませんのでご注意ください。
ようやく準備が整ったのでSSOクライアントを作成していく。
SSOの実現形態として「エージェント型」「リバースプロキシ型」がある。
OpenSSOは「リバースプロキシ型」にも対応しているが「エージェント型」がベースらしい。
「エージェント型」にするにしても、実際にSSOエージェントを立てる場合と、SSOクライアント(Webアプリケーション)で直接APIを呼び出す場合があるらしい。
参考1
OpenSSO の技術概要からわかること - tkudo's weblog about identity management
参考2
Sun Java System Access Manager
今回はエージェントを立てずにSSOクライアントで直接APIを呼び出し、SSOセッションをCookieで持ちまわる形で実装する。
また、ログイン画面については個々のSSOクライアントのものを使用し、SSOクライアントのログインプロセスの中でSSOの認証を行うこととする。
まず、実装については以下のページが参考になる。
参考3
Developer Forums
参考4
Chapter 5 Single Sign-On And Sessions
参考5
Using OpenSSO authentication with JBoss SEAM - Strange Brew
基本的にはamclientsdk.jarとAMConfig.propertiesがあればよいらしい。
ひとまずEclipse等でJavaプロジェクトを作成し、openssosamples/classes直下のプロパティファイル全てををソースフォルダ直下にコピーする。
また、openssosamples/WEB-INF/lib直下のjarファイル全てをライブラリフォルダ直下にコピーする(j2ee.jarが競合する場合は省く)。
今回のケースではSSO固有の実装は以下の部分。
- SSOクライアントのログインプロセス内でSSO認証を行う
- SSOクライアントのログアウトプロセス内でSSOログアウトを行う
- SSOクライアントのリクエスト毎にSSOが有効か否かをチェックする
3番目のところでSSOセッションがタイムアウトするのを防ぐのにリフレッシュが必要。