Сеанс ASP.NET и файлы cookie в мультитенантном приложении - PullRequest
1 голос
/ 28 марта 2011

Я работаю над мультитенантным приложением ASP.NET MVC.

До сих пор мы использовали HttpContext для хранения нескольких объектов для запроса (технически разделенных арендатором).

Однако нам нужно будет использовать TempData (использует Session) и установить куки аутентификации.

Наша спецификация:

  • Арендатор может иметь несколько URL-адресов (tenant1.myapp.com или mycustomdomain.com)
  • Аутентификационные куки-файлы НЕ должны передаваться арендаторам
  • В идеале файл cookie аутентификации клиента должен быть доступен любому из его URL

Известен ли домен сеанса? Вроде бы.

Могу ли я установить несколько доменов в файле cookie для аутентификации?

Буду признателен за любые советы, которые могут меня поймать. На самом деле мне просто нужно понять, что нужно разбивать на части для каждого арендатора (до сих пор я разбивал файловую систему, базу данных и кэш на каждого арендатора).

Спасибо

Ben

Ответы [ 2 ]

4 голосов
/ 28 марта 2011

Знает ли домен сеанса?

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

Могу ли я установить несколько доменов для файла cookie аутентификации?

Нет. Файлы cookie не могут быть разделены между доменами. Но в отличие от сеансов вы можете поделиться ими между несколькими приложениями в одном домене (установив атрибут domain для домена верхнего уровня в теге <forms> в web.config). Это то, что позволяет добиться единого входа между приложениями в одном домене. Если вы хотите добиться единого входа между приложениями в разных доменах, вам потребуется другой подход .

0 голосов
/ 28 марта 2011

Вы можете захотеть посмотреть Разделение сессий .

<configuration>
    <system.web>
        <sessionState 
            mode="StateServer" 
            partitionResolverType=
                "IndustryStrengthSessionState.PartitionResolver" />
    </system.web>
</configuration> 

Но я не верю, что вы можете совместно использовать сессии между доменами из коробки.Скорее всего, вам потребуется добавить пользовательскую синхронизацию сеансов, в которой каждый сеанс доменов связан с помощью специального алгоритма с одним и тем же пользователем / арендатором и т. Д.

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