У меня есть этот код:
var handler = new HttpClientHandler
{
AllowAutoRedirect = false,
CookieContainer = new CookieContainer(),
UseCookies = true
};
return new HttpClient(handler)
{
Timeout = Timeout.InfiniteTimeSpan
};
Я использую OpenID Connect с ASP.Net Core, который возвращает файл cookie корреляции, подобный следующему:
cookieHeader = "correlation=ABCDEFG; path=/signin; secure; HttpOnly";
Я звоню на сайт:
using (HttpResponseMessage msg = client.SendAsync(request).Result)
И получить перенаправление на сервер OpenID. Однако контейнер cookie HttpClient
не содержит файлов cookie. Если я вручную добавлю идентичный файл cookie в ответ, изменив только путь, равный /
, например
cookieHeader = "correlation=ABCDEFG; path=/; secure; HttpOnly";
Затем файл cookie появляется в HttpClient
CookieContainer
. Я не хочу изменять базовую OpenID-функциональность ASP.Net Core для изменения путей к cookie-файлам, поэтому HttpClient
будет получать cookie-файлы, и я могу проходить проверку подлинности. Есть ли способ заставить HttpClient
сохранить куки с указанными путями?