Совместное использование сеанса между поддоменами с несколькими доменами

У меня есть 2 приложения Asp.Net Core 2.2, и я хочу разделить сеанс между ними. Я установил сеанс в базе данных SQL, и оба подключились нормально. Они находятся в разных поддоменах. Я понимаю, что могу установить Cookie.Domain в качестве файла запуска, который решит проблему на базовом уровне, чтобы каждое приложение создавало cookie, чтобы к нему можно было получить доступ. например

Domain 1. "www.website.com"
Domain 2. "dashboard.website.com"

В настоящее время эти сайты не могут получить доступ к файлам cookie сеанса друг друга.

Если я установлю файл cookie домена на «.website.com», оба должны иметь к нему доступ.

Проблема в том, что у нас есть несколько доменов, которые используют этот веб-сайт, поэтому это могут быть:

www.domain1.com
dashboard.domain1.com

www.domain2.com
dashboard.domain2.com

www.domain3.com
dashboard.domain3.com

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

Это вообще возможно?

Заранее спасибо, Дэвид


person David Hendrick    schedule 26.07.2019    source источник


Ответы (1)


Нет, это невозможно. Файлы cookie привязаны к домену. Вы можете установить подстановочный знак для части поддомена в файле cookie, чтобы его могли видеть example.com, www.example.com, foo.example.com и т. Д., Но вы не можете совместно использовать совершенно другой домен, например example2.com.

Единственным вариантом в этом случае является поставщик удостоверений, такой как IdentityServer, Auth0, Azure AD и т. Д. Принцип их работы заключается в том, что файл cookie проверки подлинности устанавливается у поставщика, а затем каждое отдельное приложение авторизуется для этого поставщика. Таким образом, они могут получить принципала пользователя от поставщика, не имея фактического файла cookie аутентификации или собственной функции входа в систему.

ОБНОВЛЕНИЕ

Если вам просто нужно поделиться между сайтами в одном основном домене, следуйте инструкции в документации. Это сосредоточено на файлах cookie аутентификации. Если вам также необходимо совместно использовать сеансы, применяется та же процедура, но вы должны дополнительно иметь истинный настройка распределенного кеша (Redis, SQL Server и т. д.). Есть распределенный кеш памяти, но это просто реализация по умолчанию, и на самом деле она не распределена.

person Chris Pratt    schedule 26.07.2019
comment
Спасибо за ответ. Возможно, я не совсем понял. Я не хочу, чтобы все домены видели друг друга. Я хочу, чтобы www.domain1.com видел dashboard.domain1.com. Я хочу, чтобы www.domain2.com видел dashboard.domain2.com. Мне не нужен www.domain1.com, чтобы видеть dashboard.domain2.com - person David Hendrick; 26.07.2019
comment
Мне нужно добавить работающий домен в настройку файла cookie. - person David Hendrick; 26.07.2019
comment
Спасибо, Крис. Проблема, с которой я столкнулся, заключается в том, как поддерживать различные варианты, которые у нас есть. то есть нам нужны разные домены cookie, но каждый должен иметь доступ только к собственному домену. По этой причине я не могу просто добавить .domain1.com, так как мне нужно поддерживать .domain2.com. Мне не нужны domain1 и domain 2 для совместного использования сеанса, мне нужен www.domain1.com для совместного использования с dashboard.domain1.com, а также для www.domain2.com для совместного использования сеанса с dashboard.domain2.com. Спасибо - person David Hendrick; 29.07.2019