Что ж, возможно, вам подойдет один из пассивных протоколов единой регистрации. Вы можете выбрать между WS-Federation, SAML или Shibboleth, но первое, WS-Federation, легко поддерживается в .NET с подсистемой Windows Indentity Foundation.
Способ работы WS-Federation заключается в том, что вы экстернализуете аутентификацию / авторизацию для отдельного веб-приложения (так называемая служба маркеров безопасности ). Каждое из федеративных клиентских приложений (так называемых проверяющих сторон ) полагается на информацию, предоставляемую службой.
Основные потоки управления таковы:
- клиент указывает свой браузер на RP-приложение
- браузер перенаправляет (302) на STS
- если STS был посещен и пользователь уже вошел в STS, перейдите к 5.
- STS показывает страницу входа и проверяет пользователя
- STS возвращает браузеру страницу, содержащую подписанный токен XML со всей информацией об аутентификации, а также крошечный javascript для перенаправления в приложение RP
- приложение RP выбирает токен и создает собственную аутентификацию на основе предоставленной информации
WIF предоставляет вам инструменты для простой сборки STS и RP, а интеграция с унаследованными приложениями также проста - вы можете либо приложить усилия для обработки протокола на уровне унаследованных приложений, либо предоставить «brige», приложение .NET, использующее WIF, который использует STS и передает информацию об аутентификации в устаревшее приложение.
Замечательно также то, что с WIF вы все еще придерживаетесь старых, хороших понятий, таких как проверка подлинности с помощью форм и поставщики членства - это может быть предпочтительным выбором реализации STS.
Сам протокол WS-Federation не только обеспечивает единый вход, но и позволяет легко обрабатывать единый вход (который не поддерживается некоторыми другими протоколами, такими как openid).
Подробнее о теме в этой книге:
http://www.amazon.com/Programming-Windows-Identity-Foundation-Dev/dp/0735627185