Сеансы ASP.NET на нескольких доменах - PullRequest
3 голосов
/ 24 сентября 2010

Существует ли правильное решение .NET для обеспечения постоянных сеансов сервера в нескольких доменах?

т.е. Если пользователь сайта входит на сайт www.site1.com, он также будет зарегистрирован на сайте www.site2.com

.

Безопасность - это проблема программы, над которой мы работаем ...

Спасибо!

Ответы [ 4 ]

1 голос
/ 28 сентября 2010

Слово «сессия» может быть немного запутанным в ASP.NET.

Если вы говорите о безопасности (аутентификации и авторизации), вы, вероятно, ищете решение с единым входом. Другими словами, когда пользователь входит на один сайт, ему не будет предложено войти на другой связанный сайт. Взгляните на Windows Identity Foundation, OAuth, Jasig CAS. CAS - мое предпочтительное решение (я являюсь разработчиком на клиенте .NET), но сервер написан на Java, и вам понадобятся некоторые знания Java, чтобы настроить его так, как вы хотите.

В ASP.NET состояние сеанса является совершенно отдельным компонентом от аутентификации и авторизации (хотя это может зависеть от результата шага аутентификации). Если вы пытаетесь обмениваться информацией между двумя сайтами (т. Е. Содержимым корзины покупок), вы можете настроить оба домена на использование одной и той же базы данных в качестве поставщика сеансов (google aspnet_regsql -ssadd) или просто сохранить данные в базе данных. это доступно обоим.

Для получения дополнительной информации о том, почему я подчеркиваю различие, проверьте это: http://www.codeproject.com/KB/aspnet/ASPDOTNETPageLifecycle.aspx

Удачи.

1 голос
/ 24 сентября 2010

Должен ли он быть в сеансе или вы ищете решение для единой регистрации Если последний взглянуть на что-то вроде ADFS http://en.m.wikipedia.org/wiki/Active_Directory_Federation_Services?wasRedirected=true

1 голос
/ 24 сентября 2010

Вы можете начать здесь вместо взлома базы данных ASPState (возможно, но я не рекомендую это делать): http://www.codeproject.com/KB/session/sharedsession.aspx

По сути, вы устанавливаете AppDomain одинаково для www.site1.com и www.site2.com, используя отражение.

Вам также может также понадобиться AppPath, нам нужно было, но наши настройки немного отличались от ваших. Мы добавили:

        FieldInfo appDomainInfo = typeof(HttpRuntime).GetField("_appDomainId", BindingFlags.Instance | BindingFlags.NonPublic);
        appDomainInfo.SetValue(theRuntime, "/LM/W3SVC/1/ROOT/A_Website_Name_Here");
0 голосов
/ 24 сентября 2010

Попробуйте использовать функцию перезаписи URL канонического имени узла модуля IIS 7.5 Url Rewrite 2: Загрузка

(Этот ответ основан на том, что оба URL имеют записи заголовка узла для одного и того же веб-приложения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...