Общая аутентификация между веб-приложением SAAS/Cloud и настольным приложением
Простой сценарий:
Допустим, у нас есть облачное веб-приложение, которое позволяет пользователям регистрироваться с использованием OpenID. (Я открыт для использования Windows Live ID в качестве альтернативы) Они могут войти в систему и обновить некоторые метаданные, например, какой их любимый цвет.
Если я теперь хочу получить эту информацию из настольного клиента, как мне это сделать? Мне, вероятно, придется выставить веб-сервис для запроса этой информации, но как насчет аутентификации?
Есть DotNetOpenAuth, есть Windows Identity Foundation, у нас есть CardSpace и т. Д.
Но где, черт возьми, мне начать? Какие из них мне нужны? Нужно ли мне все 3?
А как насчет STS, есть ли что-нибудь для OpenID / Windows Live ID?
Кто-нибудь видел образец с использованием этих технологий, который будет делать то, что я ищу? Есть указатели?
1 ответ
Отделяйте в своем уме понятия аутентификации и авторизации. Вы аутентифицируете пользователей только на своем веб-сайте. Вы можете сделать это с помощью OpenID, InfoCard, STS или username+password. Клиентские приложения, которые обращаются к вашему сервису за информацией о пользователе, должны быть авторизованы, что обычно означает, что они запрашивают у пользователя свое имя пользователя и пароль, что является анти-шаблоном и ломается, когда вы используете более надежные или альтернативные учетные данные, такие как OpenID или InfoCard., как ты видишь.
Авторизация приложения должна использовать протокол делегирования, такой как OAuth, который позволяет пользователю посещать веб-страницу, которая позволяет настольному приложению получать доступ к личным данным пользователя, при этом пользователь никогда не предоставляет свои учетные данные приложению.
DotNetOpenAuth поддерживает этот полный сценарий. Он поставляется с примерами сайтов OAuth и OpenID. Я рекомендую вам воспользоваться одним из шаблонов проектов, которые демонстрируют вход в систему OpenID (а веб-формы даже включают в себя вход в систему InfoCard в качестве опции), а также OAuth Service Provider, который работает как для веб-пользователей, так и авторизует эти клиентские приложения прямо из коробка.