2010-12-09 4 views
1

Наша система использует персонализированные роли и систему аутентификации для аутентификации пользователей.Custom PrinciplePermission Authentication

Теперь я изучаю валидацию/безопасность службы. Я хочу реализовать нашу пользовательскую аутентификацию, авторизацию на wcf.

Я провел некоторое расследование, похоже, что я могу использовать атрибут PrinciplePermission для контрактов, чтобы разрешить/запретить доступ. Значение по умолчанию просто вызывает метод IsInRole на IPrinciple и IsAuthenticated на IIdentity.

Так что у меня 2 вопроса:

  1. Как реализовать свой собственный принцип, который имеет дополнительные данные/методы?
  2. Как добавить проверки сложения к принципам? например (IsExternal, который будет проверять, если они получить доступ к сервису из внутренней сети или Интернет [есть механизм контроля за это уже])

Благодарность

ответ

0

После нескольких экспериментов я пришел с настраиваемым письменным решением:

Я основал свое решение в Kyle McClellan's Authorisation Sample. Я адаптировал атрибуты для поиска пользовательского класса для извлечения пользователя.

Чтобы обойти проблему async, я загрузил пользователя и его соответствующие данные в App.xaml перед созданием MainPage. Затем я использую глобальный синглтон, который я назвал SecurityContext, для доступа к пользовательским данным.

SecurityContext - это хранимое в памяти хранилище данных пользователя, к которым можно получить доступ к клиентам.