Название немного сбивает с толку, потому что это трудно объяснить. Поэтому для начала я немного подробнее расскажу о проблеме.
Итак, у меня есть API Rest на Web Api 2, который в настоящее время проходит аутентификацию через Microsoft Identity Model 3.5, использующую файл cookie FedAuth. Этот авторизованный cookie-файл выдается модулем SessionAuthenticationModule в другом веб-приложении Это веб-приложение проходит проверку подлинности с помощью ADFS и создает файл cookie для проверки подлинности. Я хотел, чтобы этот файл cookie находился в корневом пути и был в том же домене, что и API остальных в веб-приложении 2.
Таким образом, при «pass credentials true» для вызова ajax и домене, заданном в файле cookie, и в обоих приложениях в одном и том же базовом домене файл cookie аутентификации виден остальным API, и его модуль аутентификации сеанса использует его, а rest api аутентифицируется как авторизованный пользователь в веб-приложении 1.
Проблема в том, что из-за проблем, не зависящих от меня, мы не можем изменить путь Cookie, чтобы быть в корневом пути. Таким образом, cookie не передается в остальные API.
Поэтому мне нужно найти решение для аутентификации остальных API из контекста аутентификации родительских веб-приложений. У меня есть несколько идей:
- Подключитесь к Write Session Token и сгенерируйте второй cookie специально для API, которые находятся в корневом пути с новым именем cookie, но я не хочу удваивать полезную нагрузку аутентификации для веб-запросов (удвоить cookie ...)
- Просто выполните базовое шифрование rijandael и зашифруйте идентификатор зарегистрированного пользователя в новом файле cookie, используйте его и напишите фильтр авторизации для этого в остальных API, чтобы выполнить аутентификацию, если этот файл cookie расшифровывается до действительного идентификатора пользователя (с небольшим количеством соли) , API должен только знать, кто вошел в систему идентификатор пользователя ...
- Установите для загруженного файла cookie авторизации возможность просмотра в сценарии (он зашифрован и мы используем cors), и затем я могу передать кусочки файлов cookie в вызовах ajax остальным API, поскольку я могу читать их с помощью js.
- ???