Я встраиваю Microsoft Teams в наше родное приложение для iOS через модуль Flutter (пользовательский интерфейс Flutter, размещенный внутри собственного контейнера iOS). Тот же подход работает на Android, но на iOS мы сталкиваемся с ошибкой аутентификации после закрытия и повторного открытия пользовательского интерфейса клиента Teams.
Настройка
- Пользовательский интерфейс клиента Teams запускается из модуля Flutter внутри собственного контейнера приложения iOS
- Аутентификация использует Microsoft Graph API
- Токены доступа получаются на стороне сервера (корпоративный CAS) и передаются в мобильное приложение
- При первом запуске токены работают, а запросы Graph выполняются
- После закрытия и повторного открытия Teams (тот же сеанс приложения) вход в систему не выполняется. на только для iOS
На iOS после закрытия и повторного открытия клиента Teams мы получаем:
Код: Выделить всё
AADSTS165000: Request tokens do not match user contextПримечания:
- Сброс состояния Flutter (сброс движка / «возрождение приложения») не надежно исправляет это
- Android не демонстрирует такое поведение при той же выдаче токена на стороне сервера.
- Похоже, что состояние аутентификации хранится вне жизненного цикла Flutter (например, кеш MSAL, хранилище файлов cookie WebView, ASWebAuthenticationSession, Keychain и т. д.)
- Воссоздание FlutterEngine/сброс состояния модуля Flutter
- Повторное открытие пользовательского интерфейса клиента Teams из «холодного» состояния Flutter
- Повторный запрос токенов с сервера (новый токен доступа), но iOS по-прежнему не работает после повторно открыть
- Во встроенных сценариях iOS сохраняет ли MSAL / WebView / Teams состояние аутентификации вне жизненного цикла механизма Flutter (например, кэш токена связки ключей или общее хранилище файлов cookie)?
- Есть существует рекомендуемый способ полностью очистить/сбросить контекст аутентификации на iOS, чтобы можно было установить новый контекст пользователя (например, MSAL RemoveAccount, очистка файлов cookie WKWebView, очистка состояния ASWebAuthenticationSession и т. д.)?
- Кто-нибудь видел, чтобы AADSTS165000 происходило на только iOS после закрытие/повторное открытие встроенного интерфейса Teams и какова основная причина?
Подробнее здесь: https://stackoverflow.com/questions/798 ... r-reopenin