2014-11-03 2 views
0

Я работаю над внедрением службы авторизации на основе ролей под WS Liberty. Есть две основные цели:Управление доступом на основе ролей на основе приложений

  • если пользователь без правильной группы пользователей пытается открыть ограниченный URL, показать страницу с ошибкой
  • пользователь должен увидеть меню, в котором перечислены все страницы, доступные для него

Мой вопрос: есть ли лучшие практики для реализации этого поведения? Должен ли я создать первую часть в server.xml И вторую часть в соответствующем представлении? (таким образом, «логика» будет храниться в двух разных частях кода, и, например, если мне нужно добавить новый URL-адрес, я должен вставить его в два разных места)

Так что есть способ сохранить это сопоставление роли-URL в одном месте?

Спасибо, krisy

ответ

0

В вас приложении вы можете защитить ссылки проверки роли (псевдо-код, некоторые структуры имеют уже пользовательские теги для него):

if(request.isUserInRole("roleX")) { 
    // render menu item for roleX 
} 

По умолчанию, если пользователь уже зарегистрирован и пытается получить доступ к странице, которая ограничена для него, он получит 403 Not authorized, вы можете указать страницу ошибки для этого кода через конфигурацию web.xml.

В элементе server.xml через элемент Application binding вы предоставляете только сопоставление от ролей приложений к группам, определенным в реестре. В зависимости от типа реестра вы сможете добавлять/удалять пользователей в данную группу, предоставляя или отклоняя их, например, через server.xml или инструмент управления LDAP в случае реестра LDAP.

+0

Да, это программный способ защиты кода (противоположный способ определения процедурных ролей). Это решает только первую цель, но не одновременно и то и другое. Я ищу решение, которое решает их обоих. – krisy

+0

@krisy Что вы подразумеваете под процедурными ролями? Я забыл упомянуть, что вам нужно также определить ограничения безопасности в web.xml, которые защитят ваши ресурсы. Вы используете программную защиту только для скрытия частей интерфейса, которые не должны быть видимыми. – Gas

Смежные вопросы