Я использую Android Web View в своем проекте Xamarin для выполнения сторонней аутентификации.После успешного входа в систему мне нужно извлечь куки аутентификации.Эти куки я храню в постоянном хранилище, а затем использую их для передачи последующим запросам.Например:
Android-приложение> (открывает) веб-просмотр> Загрузка (URL-адрес провайдера) URL-адрес> Пользователь предоставляет учетные данные, и запрос saml отправляется на мой бэкэнд-сервер> Бэкэнд-сервер проверяет saml и возвращает файлы cookie аутентификации.
Возвращает два куки.
Теперь все отлично работает.И в методе OnPageFinished веб-клиента веб-просмотра я пытаюсь извлечь файлы cookie, используя метод.
public override void OnPageFinished(WebView view, string url)
{
base.OnPageFinished(view, url);
var handler = OnPageCompleted;
var uri = new Uri(url);
AllowCookies(view);
var cookies = CookieManager.Instance.GetCookie(url);
var onPageCompletedEventArgs = new OnPageCompletedEventArgs { Cookies = cookies, Url = uri.AbsolutePath, RelativeUrl = uri.PathAndQuery, Host = uri.Host };
handler?.Invoke(this, onPageCompletedEventArgs);
}
private void AllowCookies(WebView view)
{
CookieManager.Instance.Flush();
CookieManager.AllowFileSchemeCookies();
CookieManager.SetAcceptFileSchemeCookies(true);
CookieManager.Instance.AcceptCookie();
CookieManager.Instance.AcceptThirdPartyCookies(view);
CookieManager.Instance.SetAcceptCookie(true);
CookieManager.Instance.SetAcceptThirdPartyCookies(view, true);
}
Проблема в том, что я могу получить только один файл cookie (wc_cookie_ps_ck), я не могу увидетьдругой файл cookie аутентификации (.AspNetCore.Cookies).Вот как файлы cookie отображаются в браузере.
Обратите внимание, что в почтальоне и в браузере Chrome оба куки появляются.Но в веб-браузере Android только cookie с именем «.AspNetCore.Cookies» вообще не отображаются.
Согласно документу Java, « При извлечении файлов cookie из хранилища cookie CookieManager также применяетПравило сопоставления пути из раздела 3.3.4 RFC 2965. Таким образом, у cookie-файла также должен быть установлен атрибут «путь», чтобы можно было применить правило сопоставления пути до того, как cookie-файл будет извлечен из хранилища cookie. "Поскольку оба моих файла cookie имеют разные пути, это причина, по которой не отображается файл с путем" / project "?