Как реализовать права администратора в приложении Java? - PullRequest
3 голосов
/ 09 февраля 2010

Я разрабатываю Программное обеспечение для моделирования данных , которое реализовано на Java. Это приложение преобразует текстовые данные (хранящиеся в базе данных) в графическую форму, чтобы пользователи могли интерпретировать данные в более эффективной форме. Теперь к этому приложению будут обращаться 3 вида людей:

1. Менеджеры (которые могут заполнять базу данных данными, а также могут просматривать визуальную форму данных после ввода данных в базу данных)

2. Зрители (которые могут просматривать только визуальную форму данных, заполненных менеджерами)

3. Администраторы (которые могут создавать и управлять другими администраторами, менеджерами и зрителями)

Теперь, как реализовать 3 дифф. просмотров того же приложения.

Примечание. Менеджеры, зрители и администраторы могут находиться в любой части мира и должны получать доступ к приложению через Интернет.

Одна мысль, которая пришла мне в голову, выглядит следующим образом:

Шаг 1: Кодировать всю бизнес-логику в EJB-компонентах, чтобы она могла использоваться в распределенной среде (средства, к которым могут обращаться несколько пользователей через Интернет)

Шаг 2: Код 3 Клиенты графического интерфейса Swing: один для администраторов, один для менеджеров и один для зрителей. Эти 3 клиента GUI могут получить доступ к бизнес-логике, написанной в EJB.

Шаг 3: Распределите клиентов, соответствующих их пользователям. Например, менеджер клиент для менеджеров.

================================= ВОПРОСЫ ======= ================================

Q1. Является ли вышеуказанный подход верным?

Q2. Это очень распространенная функциональность, которая имеется в различных программах. Итак, реализуют ли они такую ​​функциональность тем или иным способом?

Q3. Если какой-либо другой подход был бы лучше, тогда что это за подход?

Ответы [ 3 ]

9 голосов
/ 09 февраля 2010
  1. нет
  2. нет
  3. да

Создание разных клиентов для разных ролей безопасности:

  • дыра в безопасности - что, если зритель получит версию администратора?
  • трудно поддерживать

Способ сделать это:

  • делает данные, передаваемые клиенту, зависимыми от проверки безопасности
  • также делает различные части интерфейса видимыми / включенными в зависимости от этой проверки безопасности
  • проверка безопасности на сервере
  • проверка безопасности зависит от текущего пользователя
  • пользователь входит в систему при запуске, используя свои учетные данные (имя пользователя / пароль или цифровой сертификат)
  • роли безопасности (администратор, модератор, средство просмотра) хранятся на стороне сервера.

Затем, если необходимо, вы можете расширить модель безопасности, добавив:

  • различие между правами пользователя и роли
  • права на определенные ресурсы
  • переходные права
  • разрешения для определенных действий

Но такая сложная модель прав и безопасности пользователя, возможно, не требуется в вашем приложении.

2 голосов
/ 09 февраля 2010

Я согласен с @Bozho, за исключением следующего:

делает различные части пользовательского интерфейса видимыми / включенными в зависимости от проверки безопасности

На самом деле вам нужно убедиться, что нежелательный доступ к данным и т. Д. заблокирован на стороне сервера , независимо от того, виден ли пользовательский интерфейс на стороне клиента. Причина этого заключается в том, что любой код отключения пользовательского интерфейса на стороне клиента может быть разрушен. Действительно, злоумышленник может даже полностью обойти ваши пользовательские интерфейсы и провести обратный инжиниринг протоколов, специфичных для приложения, между вашим кодом клиента и сервера.

Это не означает, что вы не должны также отключать / скрывать части пользовательского интерфейса, которые пользователь не может использовать. Это просто не хорошая основа для достойной безопасности / контроля доступа.

(ОБНОВЛЕНИЕ: @Bozho изменил свой ответ сейчас, чтобы добавить блокировку на стороне сервера в свой список. Поэтому теперь я полностью согласен с этим.)

0 голосов
/ 09 февраля 2010

Я согласен с Божо.Еще один момент, связанный с подходом трех клиентов: что, если пользователь каким-то образом выяснит, как отправить операции, которые недоступны в его клиенте?Что делать, если один и тот же пользователь имеет две роли (следовательно, требуется иметь двух клиентов).И, конечно, у вас будет много дел для обслуживания одного клиента ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...