Я работаю над веб-проектом (IIS), ориентированным на .NET 4.0. Я пытаюсь подключиться к стороннему поставщику, используя SAML для единого входа.
Мой продукт настроен на две рамки: верхняя часть для меню, нижняя часть для содержимого. Когда я пытаюсь загрузить сторонний контент в нижнем фрейме, происходит сбой, потому что в нем отсутствует cookie сеанса. Если я установлю сторонний сайт для открытия в новой вкладке вместо нижней рамки, файл cookie сеанса будет присутствовать и будет корректным.
Я смотрел оба в Fiddler. Первоначальный ответ третьей стороны является результатом 302 и устанавливает 2 файла cookie - .AspNetCore.Session и версию сервера. Это происходит в обоих сценариях.
При последующем общении мой сайт всегда отправляет файл cookie версии сервера. Но он только отправляет файл cookie .AspNetSore.Session, если настроен на открытие в новой вкладке. Я не получаю никаких ошибок, кроме стороннего сайта, отклоняющего соединение из-за отсутствующего сеансового cookie (в iframe).
Мой сайт имеет свой собственный файл cookie ASP.NET_SessionId. Мы не достигли предела в отношении файлов cookie, и у меня возникает та же проблема, даже когда я удаляю все файлы cookie перед попыткой, поэтому мне интересно, существует ли конфликт между моим файлом cookie сеанса и файлом cookie стороннего производителя.
Инструмент SAML, который я использую - это ComponentSpace, и его поддержка подтвердила, что он отправляет сообщение через браузер, который затем можно использовать для вызова состояния сеанса. Мой фрагмент кода, который выполняет единый вход, состоит из одной строки - вызова библиотеки ComponentSpace. Если я проверю ответ после завершения этой строки, сторонний файл cookie сеанса уже исчезнет.
Любая помощь будет оценена.