единый вход во многих доменах без файлов cookie

Я использую Visual Studio 2008.

Мое требование - реализовать единый вход во многих доменах без использования файлов cookie. Это возможно?

например, у меня 3 домена (размещены в 3 разных системах). www.domain1.com www.domain2.com www.domain3.com

и куки отключены.

Я реализовал единый вход с файлами cookie, если сайты размещены в единой системе, значит, он работает. но это не работает, если куки отключены.

Я перепробовал все, сделал все возможные поиски в Google, но не нашел ничего полезного. пожалуйста помоги ?


person Harsha    schedule 16.02.2011    source источник


Ответы (2)


Я считаю, что у Microsoft есть уловка для их единого входа, которая может сработать для этого. Я предполагаю, что вместо файлов cookie вы должны установить переменную сеанса, поэтому теория (по памяти) выглядит примерно так:

1 - Вы назначаете один домен в качестве точки аутентификации, т.е. независимо от того, где вы входите в систему, убедитесь, что на www.domain1.com установлена ​​переменная сеанса, указывающая, что пользователь прошел аутентификацию (я думаю, в идеале вы могли бы просто поставить вход страницу в этом домене, но если нет, вы можете обойти это, используя HTTP-запросы для настройки начальной авторизации входа в домен1).

2 - Тогда трюк состоит в том, чтобы иметь общий заголовок на всех страницах других доменов (1,2,3,4), который сначала проверяет, установлена ​​ли переменная сеанса в соответствующем домене, и, если нет, выполняет перенаправление на domain1, определяет, вошел ли пользователь в систему - если да, то получите данные для входа - перенаправьте обратно в домен, из которого вы пришли (передавая данные для входа), а затем настройте переменную входа в систему, как только вы вернетесь в домен, с которого начали.

У нас есть междоменная аутентификация в системе, с которой я работаю - она ​​выполняется с помощью файлов cookie, и работать с ней просто кошмар - мы рассмотрели возможные варианты ее перепроектирования, и это решение по памяти, которое казалось наиболее подходящим. общий - заметьте, он все еще основан на файлах cookie, я думаю, но он также должен работать с сеансами.

person Rob    schedule 16.02.2011
comment
@ Роб, это идеальный способ. но проблема в том, что при каждой загрузке страницы входа она перенаправляет 3-4 раза с помощью response.redirect. в среде разработки это быстро, нужно проверить это в реальной среде. - person Harsha; 16.02.2011
comment
@ Роб, я следил за тобой, но не смог заставить его работать. когда я открыл первый домен www.domain1.com, была установлена ​​переменная сеанса. и когда я открываю второй домен, www.domain2.com, я перенаправляюсь на первый домен и проверяю переменную сеанса. здесь проблема в том, что при перенаправлении со второго домена создается новый сеанс. так что это не работает. - person Harsha; 21.02.2011
comment
@Harsha - хммм ... вы выполняете перенаправление на стороне клиента? Мой опыт работы с сеансами показывает, что они довольно постоянны, и убийство сеанса обычно включает в себя убийство браузера ... - person Rob; 22.02.2011
comment
@Rob я использую Response.Redirect, что еще я буду использовать ?? - person Harsha; 23.02.2011
comment
@Harsha - это то, что я бы тоже использовал ... так что в качестве еще одного теста, если вы настроите сеанс в домене 1, затем перейдете к несвязанному домену и вернетесь (не с помощью кнопки возврата) к домену 1, сессия сохраняется? Возможно, проверьте, что сеанс без файлов cookie ... - person Rob; 24.02.2011
comment
@Rob - я открыл домен 1, открыл несвязанный домен и открыл домен 1 на одной и той же вкладке браузера, когда файлы cookie включены, сеанс остается, но когда файлы cookie отключены, сеанс равен нулю. с этим параметром ‹sessionState mode = InProc cookieless = AutoDetect /› в web.config. и в этом сценарии четко указано, что мы не можем достичь sso, когда файлы cookie отключены. обряд? - person Harsha; 28.02.2011
comment
@Harsha - msdn.microsoft.com/en-us/library/aa479314.aspx можно проводить сеансы без файлов cookie в asp.net, используя ‹sessionState cookieless = true /› - person Rob; 01.03.2011

Вам следует взглянуть на Windows Identity Foundation и Службы федерации Active Directory в эту эпоху. Он основан на метасистеме удостоверений и модели удостоверений на основе утверждений; упрощение этих типов идентификации / аутентификации и сценариев единого входа.

Руководство по идентификации и контролю доступа на основе заявлений

В вашем случае все три ваших сайта передадут услуги аутентификации на аутсорсинг доверенному службе токенов безопасности (STS). Эта служба STS может быть ADFS, если вы предоставляете удостоверения домена AD в Интернет, в противном случае - это настраиваемая реализация WIF. Ваши веб-сайты перенаправляют неаутентифицированных посетителей на вашу службу STS, которая передает им токены безопасности (обычно в форме SAML), которые веб-сайты могут принимать в качестве утверждений идентичности.

person icelava    schedule 16.02.2011
comment
интересный. но это не с открытым исходным кодом - person Harsha; 21.02.2011
comment
Было ли что-то указано в вопросе, требующем решения с открытым исходным кодом? Что побуждает вас использовать для этого подход с открытым исходным кодом? - person icelava; 28.02.2011
comment
я имею в виду, что Windows Identity Foundation не является бесплатной утилитой, мы должны ее купить. - person Harsha; 28.02.2011
comment
Харша, я не знаю, откуда у тебя такое впечатление. WIF бесплатен для загрузки и разработки. Сама среда выполнения WIF классифицируется как Центр обновления Windows, чтобы присоединиться к другим основополагающим элементам .NET Framework - WCF, WPF, Workflow, Cardspace. - person icelava; 03.03.2011