2010-12-15 3 views
1

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

Система

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

Цель

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

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

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

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

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

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

ответ

2

Вы должны пройти через образцы для фундамента Windows Identity - Она провайдеры классов и реализацию необходимых завернуть требования, которые вы можете использовать или запрос для аутентификации и AuthZ.

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

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

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