У меня есть следующие настройки 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>
Я использую Embedded Jetty 7.6.1.v20120215 через плагин Maven Jetty.
Когда я пытаюсь войти через формучто у меня есть, поля логинов правильно отправляются в / 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>
Я вхожу в систему как администратор.
Любая помощь по загадочному сообщению JAAS, отображаемому Jettyбудет очень признателен.