Должен ли мой сервисный уровень работать для любого пользователя или ограничиться текущим аутентифицированным пользователем? - PullRequest
1 голос
/ 28 октября 2010

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

Теперь мне интересно, если

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

Я полагаю, это в основном гибкость в сравнении с решением по безопасности. Что бы вы сделали?

Ответы [ 3 ]

0 голосов
/ 28 октября 2010

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

0 голосов
/ 29 октября 2010

Существует также аспект DoS, который необходимо учитывать.

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

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

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

Тот факт, что вы пишете один набор служб, не означает, что вы можете предоставлять их только в одном месте и в одно и то же время (одним и тем же клиентам).

0 голосов
/ 28 октября 2010

Я думаю, вы должны решить, какие методы будут нуждаться в аргументе пользователя, а какие - вошедшему в систему пользователю. В результате вы получите следующие типы методов:

1.) Type1: метод лучше всего использовать в качестве аргумента пользователя.

2.) Type2: лучше всего, чтобы метод не имел аргумента User.

3.) Тип 3: комбинация 1.) и 2.)

Решение 1) и 2.) простое, потому что это тривиальные случаи.

Решение 3.) состоит в том, чтобы перегрузить метод, чтобы иметь версию типа 1.) и другую версию типа 2.).

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