ASWebAuthenticationSession не позволяет изменять диалоговое окно предупреждения

Я пытаюсь реализовать несколько различных механизмов аутентификации в своем приложении iOS. Ключевым моментом является то, что приложение iOS распространяется через App Store, а сервер, к которому оно подключается, имеет открытый исходный код. Ожидается, что для этого клиенты установят свой собственный сервер. Это работает так же, как приложение RocketChat. При настройке сервера пользователь может определить, каких провайдеров аутентификации он хотел бы использовать. Все данные аутентификации, идентификаторы клиентов, секреты и т. Д. Хранятся на стороне сервера. Серверное приложение использует паспортные данные для поддержки множества различных стратегий аутентификации. Это означает, что такие вещи, как oauth, выполняются через сервер, а обратные вызовы oauth попадают в URL-адрес сервера. Оттуда сервер может создать / сопоставить пользователя с локальной учетной записью после аутентификации, где авторизация / доступ контролируются в приложении.

Например, при выполнении oauth URL-адрес будет примерно таким:

https://customserver.com/authentication/google

Оттуда паспортные данные будут перенаправлены в Google для аутентификации.

Что касается проблемы, мне нужно запустить что-то в iOS, чтобы запустить эту аутентификацию. Похоже, что в этом случае правильнее всего использовать ASWebAuthenticationSession. Однако при использовании ASWebAuthenticationSession появляется диалоговое окно с предупреждением, в котором указывается начальный "customserver.com":

[Приложение] хочет войти в систему с помощью "customserver.com". Это позволяет приложению и веб-сайту делиться информацией о вас.

Хотя это правда, сервер (с помощью паспорта js) будет перенаправлять на сайт провайдера аутентификации. В этом случае, например, воспользуемся google oauth. Это означает, что это модальное предупреждение очень сбивает с толку, в нем говорится, что customserver.com является поставщиком аутентификации, тогда как на самом деле паспорт js перенаправляет на google (или какой-либо другой) провайдер аутентификации.

Хотя ASWebAuthenticationSession значительно упрощает этот процесс, тот факт, что он не отслеживает и, вероятно, не может отслеживать первоначальное перенаправление в Google, смущает пользователя. При этом я также рассмотрел использование SFSafariViewController и создание глубинной ссылки в приложении для соответствия схеме перенаправления. Хотя это и не так чисто, как ASWebAuthenticationSession, он работает, так как нет модального диалогового окна, предупреждающего пользователя. Я даже могу создать свой собственный модальный диалог, который предупреждал бы пользователя о правильном сайте аутентификации, если бы я хотел.

Это приводит меня к нескольким вопросам.

  1. Есть ли способ обойти или настроить сообщение, представляемое пользователю при использовании ASWebAuthenticationSession?

  2. Предполагая, что ответ на вопрос №1 отрицательный, является ли использование SFSafariViewController приемлемым решением для обхода сообщения?

1 ответ

  1. Единственная возможность конфигурации, которая у вас есть для этого модального окна с iOS 15, — это использование CFBundleName для управления текстовой частью, которую вы указываете как [APP].

  2. Да, это приемлемый обходной путь, который увеличит объем обслуживания и немного усложнит ваше решение.

С точки зрения безопасности это эквивалентно , если вы используете SFViewController. Модальный режим не дает никаких дополнительных гарантий, учитывая, насколько легко вы можете сделать модальный проход в качестве одобренного системой.

Кроме того, PKCE является обязательным для потоков мобильного приложения oauth2 .

Другие вопросы по тегам