Мы используем Azure AD в качестве поставщика удостоверений OIDC в AWS Cognito. На стороне iOS мы используем ASWebAuthenticationSession, чтобы отобразить веб-представление и позволить пользователю войти в систему. Пользователь может успешно войти в систему, но проблема в том, что при открытии браузера Safari на iPhone и переходе к учетной записи Microsoft пользователю необходимо ввести свои учетные данные.
Примечания:
false
Чего-то нам не хватает для работы единого входа между нашим приложением и приложением Safari?
@Paulw11, шаги следующие: 1. Откройте приложение и войдите в учетную запись Microsoft, используя ASWebAuthenticationsession. Опять же, мы используем AWS Cognito и Azure AD 2. Откройте приложение Safari 3. В приложении Safari откройте URL-адрес, например, https://office.com
4. Я ожидаю, что мне не нужно будет снова вводить свои учетные данные.
Я бы не ожидал, что пользователь войдет в систему на сайте office.com только потому, что он вошел в другое приложение. Вы не можете ожидать единого входа между вашим приложением и другим приложением.
@Paulw11 Paulw11 Понятно. Итак, я думаю, это зависит от каждого конкретного случая в зависимости от службы аутентификации? Например, система единого входа работает, если вы вошли в систему с помощью Google в приложении. Открытие google.com в Safari не требует ввода учетных данных.
Кажется, SSO зависит от нескольких вещей
Нашел очень полезный блог от Okta, в котором обобщается обмен файлами cookie между приложением Safari, SFSafariViewController
, SFAuthenticationSession
, ASWebAuthenticationSession
.
У вас должна быть возможность создать ссылку с токеном авторизации для Microsoft, а затем перенаправить приложение, чтобы открыть ссылку в Safari. iPhone выйдет из вашего приложения, чтобы открыть ссылку аутентификации, включая токен. Затем, если вы выйдете из приложения, вы загрузите информацию для аутентификации в Safari для использования вне вашего приложения.
Что вы подразумеваете под «открытием браузера Safari на iPhone и переходом к учетной записи Microsoft пользователя». Это внутри вашего приложения или за его пределами? На какой сайт они собираются? Зачем им входить на этот веб-сайт после аутентификации в вашем приложении?