[GWT] GWTとRealm認証 at ミネルヴァの梟は黄昏とともに飛び始める

ミネルヴァの梟は黄昏とともに飛び始める

Follow me on Twitter: http://www.twitter.com/dddaisuke

[GWT] GWTとRealm認証

without comments

サーブレットコンテナのRealm認証をGWTで利用したい場合、注意が必要だ。

通常、web.xmlに以下のように書いて、認証エリアを指定すると思うが、GWTで認証を利用したい場合、Ajax通信先のURLも認証エリアに指定する必要がある。URLは、web.xmlの中ののどこかに記載されているハズだ。

私の場合は、Ajax通信するまえのHTMLはちゃんと認証が掛って、正しいIDでログインしているにも関わらず、Ajax通信先のURLを認証エリアに指定していなかったために、Principal情報を取得できませんでした。

<web-resource-collection>
<web-resource-name>SobaEducationPortal</web-resource-name>
<url-pattern>/secure/*</url-pattern>
<!– ↓この指定を忘れるとうまくいかない –>
<url-pattern>/ajax/*</url-pattern>
</web-resource-collection>

この設定さえできてしまえば、Servlet側のプログラムは簡単だ。

RemoteServiceServletの拡張クラスで、getThreadLocalRequest()を利用しHttpServletRequestのインスタンスを取得すると後は、通常通りPrincipal情報を取得する事ができる。

HttpServletRequest request = this.getThreadLocalRequest();
Principal principal = request.getUserPrincipal();

Written by daisuke

9月 29th, 2009 at 1:42 pm

Leave a Reply