短いバージョン:純粋な Java EE 6 では、フォームベースの認証をカスタマイズするSpring の Authentication Processing Filter のようなものはありますか?
長いバージョン:私は純粋な Java EE 6 Web アプリケーション (JSF2、CDI) に取り組んでいます。これは、後で使用される具体的な Java EE 6 コンテナーから独立している必要があります。
アクセスが制限された JSF2 ページは、サブフォルダー/pagesに格納されます。私の web.xml では、これらのページへのアクセスを制限するために次のように定義しました。
<login-config>
<auth-method>FORM</auth-method>
<realm-name>??????????</realm-name>
<form-login-config>
<form-login-page>/login.jsf</form-login-page>
<form-error-page>/access_denied.jsf</form-error-page>
</form-login-config>
</login-config>
<security-constraint>
<display-name>pages_auth</display-name>
<web-resource-collection>
<web-resource-name>pages</web-resource-name>
<url-pattern>/pages/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>AuthenticatedUser</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>AuthenticatedUser</role-name>
</security-role>
「????」で示されるように 上記のコードでは、JDBC のような事前定義されたレルムの 1 つを使用できません。これは、使用する認証が非常にカスタムであり (厄介な詳細: 資格情報が醜いレガシー システムに対してチェックされる)、Java コーディングが必要になるためです。
認証の成功を示すブール値を返すパラメーター「ログイン」と「パスワード」を使用して、いくつかの認証メソッドをオーバーライドするインターフェイスを実装する新しいクラスを作成できると期待していました。
しかし、トピックについて数時間読んだ後、私は完全に道に迷いました:-(JAAS LoginModuleとRealmを実装する必要がありますか?これは私には非常に複雑に見えます.または、それを行うための別の標準Java EE 6方法がありますか?または代わりに ServletFilter を実装する必要がありますか?