認証まわりの話

Jetspeed2 のユーザー認証まわりの話をまとめておく。J2 では、ユーザーの認証・承認にJAASの仕組みを使っているけど、デフォルトのログイン関係で呼ばれるのは、org.apache.jetspeed.security.impl.DefaultLoginModule になる。っで、誰がこのモジュールを使えと指定しているかというと、jetspeed-securityコンポーネントに入っている login.conf です。その中には、

Jetspeed {
org.apache.jetspeed.security.impl.DefaultLoginModule required;
};

と書いてある。このファイルの指定方法だけど、-Djava.security.auth.login.config=login.conf とかで指定する場合もあるが、J2 ではorg.apache.jetspeed.security.impl.AuthenticationProviderImplが

System.setProperty("java.security.auth.login.config", loginConfigUrl.toString());

を呼んで、設定しています。ここでいうloginConfigUrl.toString()っていうのは、クラスローダーのリソースから解決され、ファイル名自体は、このコンポーネントは、Spring で new されるから、WEB-INF/assembly/security-providers.xml で変更可能(試したことはないけど)。まぁ、わざわざ変えなくても、WEB-INF/classesにlogin.conf を置いて、モジュールを設定すればそれに切り替わるはず。

JSR 286 Portlet Specification 2.0 (PLT.7.1.1.1 – PLT.8.7)

つづき・・・

PLT.7.1.1.1 URL Properties

URLにベンダ固有の情報を設定するために、ポートレットで利用可能なプロパティがある。BaseURLのsetPropertyとaddPropertyでそれが可能で、setProperty で名前と値を渡して設定して、再度、setPropertyをすれば、上書きされる。addPropertyはあたえられた名前に値を追加する。

PLT.8.4 Custom Portlet Modes

ちょっとここは変更が入っている。ポートレットがポータルが管理していないモードを追加してよいとある。ポータルによって管理されないモードは、portal-maangedタグをfalseとして宣言するそうな。

ポートレットは、カスタムポートレットモードを利用するポートレット配備記述子にcustom-portlet-mode要素で定義する。配備時に、ポータルで管理されているモードは、ポータルに実装されるモードにマップされる。一方、ポータルに管理されないモードを藻津ポートレットは、カスタムポートレットモードセクションのdecoration-name要素のテキストとして提供される。このテキストは、リソースバンドルで翻訳可で、リソースバンドルがなければ、decoration-nameタグで提供された名前をそのままモード名として利用することになる。まぁ、別にそこまでしなくてもサポートしないモードとして、放置でもいいみたい。

以下が例。

<portlet-app>
...
<custom-portlet-mode>
<description>Creates content for Cut and Paste</description>
<portlet-mode>clipboard</portlet-mode>
<portal-managed>false</portal-managed>
<decoration-idname>ClipboardMode</decorationidname>
</custom-portlet-mode>
<custom-portlet-mode>
<description>Provides administration functions</description>
<portlet-mode>configadmin</portlet-mode>
<portal-managed>true</portal-managed>
</custom-portlet-mode>
...
</portlet-app>

というわけで、decoration-nameとportal-managedが新登場。

PLT.8.5 GenericPortlet Render Handling

renderメソッドもアノテーションがサポートされている。@RenderMode(name=<portlet mode name>)という感じ。メソッドは、

void <methodname> (RenderRequest, RenderResponse) throws
PortletException, java.io.IOException;

という感じ。GenericPortletで特にマッチするのがなければ、doView, doEdit, doHelpが呼ばれる。

PLT.8.7 Setting next possible Portlet Modes

どうやら、表示する際に、その表示したときの状態に対して、選択できるポートレットモードを指定できるらしい。指定しなければ、従来通り、ポートレット配備記述子に書いたものが全部表示される。javax.portlet.renderHeaders(これはいまいち謎?)を指定できるか、GenericPortletのgetNextPossiblePortletModesを上書きしても良いし、setNextPossiblePortletModesでRENDER_HEADERS内にセットも可能らしい(PLT.11.1.1.3.3を見るべし)

とりあえず、ここまで・・・。

109シネマズMM横浜

昨日は、久々に映画を見に行った。朝の第一回目のを見に行ったのだけど、チケットは前もって、サイトで購入しておいたので、行ったら、発券機にカードを入れて、あっさり購入。一方、普通のチケット売り場は、めちゃくちゃ長い列ができていて、アレに並んで買うとなると、第一回目のは間違いなく見れなかった気がする。まぁ、そんな感じで、席も指定席だし、快適に見ることができた。