Я использую декларативную аутентификацию на основе форм J2EE в своем веб-приложении, следуя инструкциям, приведенным в различных местах, например здесь: http://java.dzone.com/articles/understanding-web-security
Похоже, что вход в систему через j_security_check позволяет всем пользователям в пределах области проходить аутентификацию (вход в систему), но не проверяет их роли.
Проверка авторизации выполняется только тогда, когда пользователь заходит на страницу с ограничением безопасности.
Так что в моем приложении пользователь может успешно войти в систему, потому что он находится в области, но затем, когда он получает доступ к защищенной странице, он получает уродливое сообщение «Ошибка 403: AuthorizationFailed».
Есть ли способ ограничить проверку подлинности для пользователей с определенной ролью? Или я должен убедиться, что пользовательская область содержит только пользователей с необходимой ролью.
С точки зрения кода, у меня есть это объявление в моем web.xml:
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Simple</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/loginerror.jsp</form-error-page>
</form-login-config>
</login-config>
Но в нем ничего не говорится о необходимых ролях, поэтому любой пользователь, переходящий к login.jsp, может успешно войти в систему, если он находится в группе.
Затем, когда пользователь получает доступ к любой из страниц, соответствующих шаблону URL, здесь:
<security-constraint>
<display-name>Authorised</display-name>
<web-resource-collection>
<web-resource-name>Authenticated and Authorised Resources</web-resource-name>
<url-pattern>/secure/*</url-pattern>
<http-method>PUT</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>simpleWebAppUser</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>INTEGRAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Вот когда проверяются роли.
Роль simpleWebAppUser распространяется на все приложения, и я хочу убедиться, что у пользователя есть эта роль, прежде чем разрешить вход в систему.
Я использую WebSphere 7.0, настроенный для использования пользовательского репозитория O / S, в Windows XP / 2000/2003.