Нужна помощь в понимании архитектуры безопасности WCF - PullRequest
1 голос
/ 15 декабря 2010

Итак, последние пару дней я бился головой о стену, пытаясь понять, как работает архитектура безопасности WCF. У меня есть цель, и я не уверен, что иду в правильном направлении.

Система

Мы используем комбинацию Active Directory и баз данных для управления нашей аутентификацией и авторизацией. Клиентские приложения обычно используют свои учетные данные Windows для проверки подлинности, и приложения проверяют таблицы базы данных, чтобы узнать, разрешено ли этим пользователям проверять подлинность, а затем, если они уполномочены использовать запрашиваемые ресурсы. В текущей настройке каждый клиент напрямую связывается с базой данных для выполнения этих проверок.

Цель

Мы хотим использовать службу маркеров безопасности для аутентификации клиента и предоставления полномочий «высокого уровня» для ресурсов верхнего уровня. Службы, предоставляющие данные или выполняющие действия, будут работать, если предоставленный SecurityToken действителен. Кроме того, токен, если он не содержит определенного права, запросит службу токена, чтобы узнать, есть ли у пользователя права, которые не были загружены при первоначальном создании токена. (У нас более 300 прав в нашей базе данных, и это может привести к довольно здоровенным токенам для пользователей с множеством прав)

Что я не понимаю

1) Я понимаю процесс создания токена, но я немного растерялся из-за того, как клиент получает, хранит и отправляет токен службам, которые он намеревается использовать. Требуется ли каждому «рабочему» сервису уникальный токен (т. Е. Для вызова CalculatorService требуется одна версия токена, а для SaveResultService требуется создание нового токена?) Можно ли вручную запрашивать, сохранять и отправлять токены?

2) Каков процесс проверки токена на стороне работника? Должен ли мой «рабочий» сервис связываться со службой токенов для проверки токена? Или он просто читает токен и предполагает, что, если он правильно подписан, токен является подлинным и работает с этой точки зрения?

3) Можно ли зашифровать мои токены вручную и сохранить их на стороне клиента для использования, пока они действительны (таким образом, избегая попыток аутентификации при каждом вызове службы) и чтобы веб-клиент мог сохранять токен между загрузками страниц и повторно использовать его при последующих вызовах?

Спасибо за помощь с моим непониманием

1 Ответ

2 голосов
/ 18 декабря 2010

Вам следует ознакомиться с примерами для Windows Identity Foundation. Он предоставляет классы и реализации, необходимые для упаковки утверждений, которые можно использовать или запрашивать для auth и authz.

http://msdn.microsoft.com/en-us/library/ee517291.aspx

Что вам нужно, так это долговечный кеш-токен.- Жетоны имеют срок службы и обычно требуют обновления, а WIF выполняет обновление под капотом для большинства сценариев.

Вы можете вручную запрашивать и прикреплять токены и объединять прокси с помощью WIF.

...