Ваш LoginModule должен переопределить один из потомков org.jboss.security.auth.spi.AbstractServerLoginModule
. Если вы реализуете или переопределяете метод getRoleSets()
, вы можете добавить роли аутентифицированному пользователю для авторизации.
Метод getRoleSets()
возвращает массив групп, соответствующих наборам ролей, назначенным пользователю. Вы должны вернуть группу под названием «Роли», которая содержит роли, назначенные пользователю. Например:
@Override
protected Group[] getRoleSets() throws LoginException {
Group group = new SimpleGroup("Roles");
try {
Principal p = createIdentity("ADMIN_ROLE");
group.addMember(p);
} catch (Exception e) {
LOGGER.error("Failed to create principle on login", e);
}
return new Group[] { group };
}
Затем добавьте аннотации @RolesAllowed
к открытым методам, указав разрешенные роли. Например:
@RequestScoped
@DenyAll
@Path("admin")
public class AdminServices {
@POST
@Path("/myAdminUri")
@Produces(MediaType.TEXT_PLAIN)
@RolesAllowed({ "ADMIN_ROLE" })
public String administerMethod(@Context HttpServletRequest req, @Context HttpServletResponse resp)
throws SomeException {
....
Если пользователь не вошел в систему с требуемой ролью, ему будет отказано в доступе к методу.
РЕДАКТИРОВАТЬ: Файл web.xml
может также перечислять ограничения безопасности в строфе <security-constraint>
. Имя роли должно соответствовать роли, выделенной методом getRoleSets()
.
<security-constraint>
<web-resource-collection>
<web-resource-name>Secure resources</web-resource-name>
<url-pattern>/admin*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN_ROLE</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>ADMIN_ROLE</role-name>
</security-role>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>SecureRealm</realm-name>
</login-config>
Справочное руководство по безопасности доступно на Сайт Redhat (требуется подписка на поддержку)
person
shonky linux user
schedule
29.04.2015