次の Jetty セットアップがあります。
<New class="org.eclipse.jetty.plus.jaas.JAASLoginService">
<Set name="Name">FOO JAAS Realm</Set>
<Set name="LoginModuleName">foo</Set>
<Set name="roleClassNames">
<Array type="java.lang.String">
<Item>foo.jaas.principal.UserPrincipal</Item>
<Item>foo.jaas.principal.RolePrincipal</Item>
<Item>org.eclipse.jetty.plus.jaas.JAASRole</Item>
</Array>
</Set>
</New>
Maven Jetty プラグインを介して Embedded Jetty 7.6.1.v20120215 を使用しています。
持っているフォームからログインしようとすると、ログイン フィールドが適切に /j_security_check に送信されます。ユーザーを適切に呼び出して検証する独自の LoginModule を作成しました。プリンシパルがデータベースから適切に取得されていることがわかります。
セキュリティで保護されたページが表示される代わりに、Jetty は次のように表示します。
HTTP ERROR 403
Problem accessing /foo/auth.html. Reason:
!role
それが本当に何を意味するのか、私にはよくわかりません。
web.xml に次のものがあります。
<security-constraint>
<web-resource-collection>
<web-resource-name>ADMINISTRATOR</web-resource-name>
<url-pattern>/auth.html</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>ADMINISTRATOR</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>foo</realm-name>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/authfail.html</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>ADMINISTRATOR</role-name>
</security-role>
<security-role>
<role-name>USER</role-name>
</security-role>
管理者としてログインしています。
Jetty によって表示される不可解な JAAS メッセージに関するヘルプをいただければ幸いです。