Name
Password

BASIC認証を行なわせるには

  • 2010-03-30 11:55 更新

org.seasar.kvasir.cmsプラグインのorg.seasar.kvasir.cms.pageFilters拡張ポイントとorg.seasar.kvasir.cms.pageExceptionHandlers拡張ポイントにそれぞれbasicAuthenticationPageFilterとbasicAuthenticationPageExceptionFilterを追加することで、BASIC認証を行なわせることができます。

例えば「com.example.plugin.gard」というGardにアクセスがあった際にBASIC認証を行なわせたい場合は、以下のような設定をplugin.xmlに追加して下さい。

<requires>
  <import plugin="org.seasar.kvasir.cms" />
  ...
</requires>

...

<extension point="org.seasar.kvasir.cms.pageFilters">
  <page-filter id="basicAuthenticationPageFilter"
    gard-id="com.example.plugin.gard"
    phase="authentication"
    after="org.seasar.kvasir.cms.actorBindingPageFilter" />
</extension>

<extension point="org.seasar.kvasir.cms.pageExceptionHandlers">
  <page-exception-handler id="basicAuthenticationPageExceptionHandler"
    gard-id="com.example.plugin.gard"
    type="org.seasar.kvasir.page.SecurityRuntimeException">
    <init-param>
      <param-name>errorPage</param-name>
      <param-value>@/error/error403.html</param-value>
    </init-param>
  </page-exception-handler>
</extension>

独自の認証エラーページを指定する場合は、上記のようにbasicAuthenticationPageExceptionHandlerに<init-param>指定を書いて下さい。また、エラーページのリソースをプロジェクトに追加して下さい。エラーページのパスは任意です。この例の場合は「@/error/error403.html」としていますので、プロジェクト内のリソースパスはsrc/main/plugin/gards/gard/static/error/error403.htmlです。独自のエラーページを指定しない場合は<init-param>指定は不要です。

上記設定を行なうことで、権限を持たない状態でcom.example.plugin.gard配下のパスにアクセスするとBASIC認証のダイアログが表示されるようになります。