ASP.NET Универсальный вход с нескольких сайтов - PullRequest
2 голосов
/ 18 сентября 2010

У меня есть вопрос, который не нуждается в каком-либо конкретном ответе, только общее направление того, что делать.Я работаю в компании, которая имеет много сайтов.Каждый сайт требует входа в систему в какой-то момент.У нас есть единая база данных учетных записей, которую посещают все сайты.

Одно из требований к системе входа в систему состоит в том, что если мы регистрируемся на одном сайте, мы должны автоматически регистрироваться в другом месте.

Прямо сейчас это работает так, что при загрузке страницы (или init, забудьте, какой) на любом из наших сайтов (скажем, site1.com) он перенаправляет на «основной» сайт (скажем, sitemaster.ком).На sitemaster.com есть веб-служба, которая проверяет, существует ли на сайте sitemaster.com файл cookie для этого пользователя.Если это так, он перенаправляет назад и сообщает site1.com, что пользователь уже вошел в систему (затем site1.com создает файл cookie для site1.com, поэтому нам не нужно перенаправлять на sitemaster.com в будущем).Если пользователь не вошел на сайт sitemaster.com, site1.com попросит пользователя войти в систему и при отправке перенаправит пользователя на сайт sitemaster.com, который их авторизует, создаст файл cookie в домене sitemaster.com, перенаправит пользователя.обратно на site1.com и сообщает site1.com, что пользователь вошел в систему (который затем создает файл cookie для site1.com).

При выходе из системы используется аналогичный метод.

Isэто лучший способ обработки универсальных входов в систему или автоматического входа на нескольких сайтах?Есть ли лучший способ сделать что-то?

Некоторые требования:

  • Большинство наших сайтов находятся в .NET 2.0, но есть планы обновить их все до .NET 4.0.Нам нужен лучший метод для этой системы автоматического входа, поэтому, если что-то требует .NET 4.0, это нормально.
  • Решение не должно требовать javascript (наше текущее решение требует javascript во время процесса входа в систему).
  • Для решения не требуется Flash.
  • Можно использовать iframes, если не требуется javascript.
  • Мы хотели бы иметь возможность выполнять вход в AJAX (используя jQuery) безобновление сайта.Текущее решение из-за перенаправлений не позволяет нам сделать это.(например: всплывающее модальное окно, запрашивающее у пользователя логин, и когда они это делают, модальное окно исчезает, и часть контента изменяется, но обновление сайта не требуется).Это не является абсолютно необходимым, но, по крайней мере, мы должны быть в состоянии подтвердить вход в систему с помощью AJAX до того, как произойдет какое-либо перенаправление.

Любые статьи или предложения будут очень полезны.У меня также есть несколько вопросов, касающихся наилучшего способа повторного использования кода автоматического входа на сайты (от форм ASP.NET 2.0 до ASP.NET 4.0 MVC, но я оставлю это для другого вопроса).

Бар

Ответы [ 2 ]

3 голосов
/ 18 сентября 2010

На простом уровне ваша система очень похожа на OpenID.Возможно, стоит внедрить собственного внутреннего провайдера OpenID и сохранить все пользовательские настройки, исправления ошибок и т. Д. Для системы на заказ.OpenID поддерживается многими сайтами, включая stackoverflow.com.

http://openid.net/

и

http://wiki.openid.net/Run-your-own-identity-server

, что приводит к:

http://www.dotnetopenauth.net/

-Oisin

0 голосов
/ 18 сентября 2010

То, что вы описали, является федеративной веб-схемой единого входа.В конечном итоге, я бы порекомендовал вам вместо того, чтобы кататься по собственной инициативе, вы приняли стандарт WS-Federation.Преимущества заключаются в том, что вы менее подвержены внедрению уязвимостей в системе безопасности, а также можете использовать единый вход в приложения, отличные от приложений ASP.NET.

...