ASP.NET MVC многосайтовый SSO с использованием OpenID - PullRequest
12 голосов
/ 07 августа 2009

Я составляю план для ряда сайтов, которые будут делиться информацией об учетных записях пользователей. Идея состоит в том, что, как только пользователь входит в систему, используя свой OpenID, он может получить доступ к любому из сайтов, и он будет знать, кто он такой.

Каковы общие модели / лучшие практики, которые я мог бы использовать для достижения этой цели?

Ответы [ 2 ]

12 голосов
/ 08 августа 2009

Если все сайты имеют общее имя хоста в своих URL-адресах, вы можете установить файл cookie для проверки подлинности (FormsAuthentication.SetAuthCookie), указав путь к cookie, который будет "/", чтобы все сайты могли видеть, что пользователь вошел в систему.

Если сайты не имеют общего имени хоста, я думаю, что единственный способ получить по-настоящему «после входа в систему, вход в систему везде [в пределах вашего круга веб-сайтов]» - это сделать так, чтобы все аутентификации происходили только на одном сайт (возможно, один предназначен для аутентификации пользователя) и для других сайтов, чтобы перенаправить пользователя на этот сайт для аутентификации, а затем этот сайт будет перенаправлен обратно. По сути, этот сайт аутентификации становится провайдером идентификации и почти точно выполняет роль провайдера OpenID (фактически DotNetOpenAuth может использоваться здесь именно для этой цели). Поскольку ваша цель состоит в том, чтобы позволить пользователю войти в систему со своим OpenID, ваш поставщик OpenID на этом сайте аутентификации может сам использовать OpenID для аутентификации пользователя. Ваш собственный поставщик OpenID с открытым делегированием может быть записан так, что он всегда немедленно реагирует на запросы checkid_immediate, если область в запросе аутентификации является одним из ваших доверенных колец сайтов. Таким образом, вы можете осуществлять единый вход на всех своих сайтах.

1 голос
/ 11 августа 2009

Пожалуйста, рассмотрите следующие образцы и практики по безопасности веб-служб от Microsoft:

Брокерская аутентификация - http://msdn.microsoft.com/en-us/library/aa480560.aspx

Основная тема - Безопасность веб-службы

Сценарии, шаблоны и руководство по внедрению для расширений веб-сервисов (WSE) 3.0

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

В конечном счете, есть много способов, которыми вы могли бы это сделать. Я достиг простого единого входа, создав URL-адрес с токеном с одного веб-сайта, указывающим на другой домен. Закодированный и зашифрованный токен содержал детали для отправки обратно на предыдущий домен. После получения входящего запроса во втором домене базовая веб-служба проверяет, является ли токен входящего запроса действительным для предыдущего домена, используя общий секретный секрет, известный обоим доменам.

...