Вызов конечной точки выхода / завершения сеанса AppAuth с использованием IdentityServer4 в Flutter на iOS - PullRequest
0 голосов
/ 16 апреля 2020

Я использую пакет flutter_appauth во Flutter для обработки потоков кода авторизации для IdentityServer4 и не смог найти метод, с помощью которого можно вызвать конечную точку /endsession в iOS.

Чтобы понять, что я пытаюсь сделать, это моя рабочая реализация Android с использованием пакета url_launcher:

    var signOutUrl = '${_endSessionUrl}?id_token_hint=${_idToken}&post_logout_redirect_uri=${AppConfig.oidcCallbackUri}';
    await launch(signOutUrl);

Используя тот же код, iOS просто сообщает общая информация PlatformException без дополнительных подробностей относительно причины, хотя исключение, безусловно, связано с полным обходом AppAuth путем простой попытки запустить URL.

Решение в в этом комментарии GitHub появляется работать с использованием OKTA, но при использовании IdentityServer4 я получаю следующее исключение, которое немедленно завершает работу приложения Flutter:

[DEVICE LOG] 2020-04-16 08:55:01.039163-0400  localhost Runner[18007]: (CoreFoundation) *** Terminating app due to uncaught exception 'Attempted to create a token exchange request from an authorization
response with no authorization code.', reason: 'Attempted to create a token exchange request from an authorization response with no authorization code.'

Это имеет смысл, учитывая, что моя конечная точка /endsession не возвращает ответ на авторизацию.

В любом случае решение вызова конечной точки авторизации с URL-адресом завершения в лучшем случае является хаком, но, похоже, это «принятый» способ сделать это.

Вся документация, которую я могу найти, используя AppAuth, говорит, что выхода можно получить, просто «забыв» токены в приложении, но так как браузеры сохранить аутентичные куки, вход в систему происходит автоматически. У пользователей нет возможности выбрать другую учетную запись.

Также стоит отметить, что это не является указанием c для Flutter, пакета flutter_appauth или IdentityServer4. Этот комментарий к собственному пакету AppAuth- iOS описывает ту же проблему с тем же решением, как описано выше.

Абсолютно должна быть возможность выйти (и, следовательно, удалить браузер). куки) на iOS, но я в полной растерянности относительно того, как этого добиться.

...