Шаблоны авторизации службы WCF

Я внедряю безопасный сервис WCF. Аутентификация выполняется с использованием имени пользователя / пароля или учетных данных Windows. Служба размещена в процессе службы Windows. Теперь я пытаюсь найти лучший способ реализацииавторизация для каждой сервисной операции.

Например, рассмотрим следующий метод:

public EntityInfo GetEntityInfo(string entityId);

Как вы, возможно, знаете, в WCF существует объект OperationContext, из которого вы можете получить учетные данные безопасности, переданные вызывающим абонентом / клиентом. В настоящее время,аутентификация уже закончил бы к тому времени, когда вызывается первая строка в методе. Однако как мы реализуем авторизацию, если решение зависит от самих входных данных? Например, в приведенном выше случае, скажем, пользователям с правами администратора (чьи разрешения и т. Д. Хранятся в базе данных) разрешено получать информацию об объектах, а другим пользователям не разрешается ... где мы помещаем проверки авторизации?

Скажем, мы поместили его в первую строку метода следующим образом:

CheckAccessPermission(PermissionType.GetEntity, user, entityId) //user is pulled from the current OperationContext

Теперь есть пара вопросов:

Проверяем ли мы entityId (например, проверяем нулевое / пустое значение и т. Д.) ДО проверки авторизации или ВНУТРИ проверки авторизации? Другими словами, если проверки авторизации должны быть включены в каждый метод, это хороший шаблон? Что должно произойти первым - проверка аргумента или авторизация?

Как выполнить модульное тестирование службы WCF, когда проверки авторизации повсюду, как здесь, и у нас нет OperationContext в модульном тесте !? (Предполагается, что я пытаюсь протестировать реализацию этого класса обслуживания напрямую без какой-либо настройки WCF).

Есть идеи, ребята?

Ответы на вопрос(3)

Ваш ответ на вопрос