PALポータルでの GlassFish や OpenSSO の設定方法を Jetspeed2 でも同じだから、http://palab.blogspot.com/ にも書かなきゃな、と思いつつ、時間が過ぎていたのだけど、今日書いておいた。blogger のあのデザインだと、テーブル表示がおかしくて、調べるのも面倒だからテーブルを使うのをやめて普通に書いた。そのうち、そのブログもデザインとか整備したいな・・・。
カテゴリー: PAL
PALポータル(Jetspeed2)とOpenSSO
ここのところ、SSOまわりを調査・検討しているけど、PALポータル(Jetspeed2も同じ)でOpenSSOの認証を使う仕組みを作って、PALにコミットしておいた。OpenSSO もまだ謎の部分が多いのだけど(設定がいろいろあって細かいところを理解するにはもっと時間が必要・・・)、とりあえず、動いた。やり方は、JBoss Portal がやっていることに近い(Liferay のやり方はいまいちな気がする)。コードは以下に置いた(リリース物はそのうち・・・)。
http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/pal-portal/trunk/components/palportal-sso/?root=pal
使い方
- OpenSSO をセットアップする
- palportal-sso-2.1.3_pal-1.0.3.jar と openssoclientsdk-1.0-b3.jar (openssoclientsdk.jar)を webapps/palportal/WEB-INF/lib/ にコピーする
- webapps/palportal/WEB-INF/web.xml を編集する
... <filter> <filter-name>OpenSSOFilter</filter-name> <filter-class>jp.sf.pal.portal.sso.opensso.OpenSSOFilter</filter-class> <init-param> <param-name>loginURL</param-name> <param-value>http://servername:8080/opensso</param-value> </init-param> </filter> ... <filter-mapping> <filter-name>OpenSSOFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ...
注意点
- ログインしていない状態でアクセスしたい場合は、filter のパラメータでprotectedPathsを指定する。/login/proxy などを指定すると、OpenSSOの認証後にそのページが表示されるので別途サーブレットを用意する必要がある(何か良い方法が思いついたら手を加えるかも)。
JOSSOやCASにしても、同じようにやればいいのだと思うけど、環境を作るのが面倒なので、またそのうち考えよっと。というわけで、Jetspeed2 でもそれらの SSO はできる(と思う)ということで。
ユーザー追加などをバッチ処理する
Jetspeedでユーザーの追加や削除をバッチ処理したいという要望をよく聞いていたのですが、それをするサーブレットをPALポータルに追加してみました(次のリリースでは含まれている予定)。
使い方は、ポータルの web.xml に以下のサーブレット定義を加える(必要に応じて、セキュリティの設定をする)。
<servlet> <servlet-name>UserManagerServlet</servlet-name> <servlet-class>jp.sf.pal.portal.servlet.UserManagerServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UserManagerServlet</servlet-name> <url-pattern>/userManager</url-pattern> </servlet-mapping>
あとは http://localhost:8080/palportal/userManager?name1=value1&… にアクセスする。以下の操作が可能である。
- ユーザーの認証確認
- ユーザーの追加
- パスワードの更新
- ユーザーの削除
出力フォーマットは以下のような感じ。
<?xml version="1.0" encoding="UTF-8" ?> <results> <status>文字列</status> <message>文字列</message> <result> <name>文字列</name> <value>文字列</value> </result> </results>
ユーザーの認証確認
URLで渡すパラメータ
リクエストパラメータ | 値 |
action | authenticate |
username | ユーザー名 |
password | パスワード |
出力結果のstatus
値 | 説明 |
success | 正常終了(ユーザーが存在して、パスワードも正しい場合) |
authentication-failed | ユーザー認証に失敗した |
invalid-parameter | リクエストパラメータが正しくない |
excluded-user | 操作の対象外ユーザーへの処理を行った |
ユーザーの追加
URLで渡すパラメータ
リクエストパラメータ | 値 |
action | create |
username | ユーザー名 |
password | パスワード |
出力結果のstatus
値 | 説明 |
success | 正常終了(ユーザーが正常に作成された場合) |
user-already-exists | ユーザーが既に存在していて、作成できない |
server-error | ユーザー作成時にサーバー側でエラーが発生した |
invalid-parameter | リクエストパラメータが正しくない |
excluded-user | 操作の対象外ユーザーへの処理を行った |
パスワードの更新
URLで渡すパラメータ
リクエストパラメータ | 値 |
action | update |
username | ユーザー名 |
password | パスワード |
出力結果のstatus
値 | 説明 |
success | 正常終了(ユーザー情報が正常に更新された場合) |
user-not-found | 対象ユーザーが存在しない |
server-error | ユーザー更新時にサーバー側でエラーが発生した |
invalid-parameter | リクエストパラメータが正しくない |
excluded-user | 操作の対象外ユーザーへの処理を行った |
ユーザーの削除
URLで渡すパラメータ
リクエストパラメータ | 値 |
action | update |
username | ユーザー名 |
password | パスワード |
出力結果のstatus
値 | 説明 |
success | 正常終了(ユーザーが正常に削除された場合) |
user-not-found | 対象ユーザーが存在しない |
server-error | ユーザー削除時にサーバー側でエラーが発生した |
invalid-parameter | リクエストパラメータが正しくない |
excluded-user | 操作の対象外ユーザーへの処理を行った |
以上。