Войдите в SFAuthenticationSession, затем откройте ссылку в SFSafariViewController, который выполняет SSO

Я использую AppAuth-iOS для входа в AD B2C, AppAuth-iOS использует SFAuthenticationSession для выполнения запросов аутентификации на iOS 11+. Я предположил, что когда я вызываю SFSafariViewController, чтобы открыть ссылку на веб-приложение, которое выполняет SSO с B2C, оно автоматически аутентифицирует пользователя в нем. Однако это не похоже на работу.

Разве это не должно работать? Я делаю это неправильно?

Я попытался изменить модуль AppAuth-iOS в своем проекте и попытался открыть запрос аутентификации в веб-просмотре и использовать веб-просмотр, чтобы также открыть ссылку... не работает. Кроме того, я читал о случаях, когда Safari не делился файлами cookie, относится ли это также к просмотру веб-страниц? Использует ли веб-браузер браузер Safari? Я также читал другие материалы, связанные с этой проблемой, но они сбивают меня с толку, и, в конце концов, для меня нет закрытия для них.

Это код из OIDExternalUserAgentIOS.m из AppAuth-iOS, который используется для связи приложения с входом в систему B2C:

SFAuthenticationSession *authenticationVC =
    [[SFAuthenticationSession alloc] initWithURL:requestURL
                               callbackURLScheme:redirectScheme
                               completionHandler:^(NSURL * _Nullable callbackURL,
                                                   NSError * _Nullable error) {
  __strong OIDExternalUserAgentIOS *strongSelf = weakSelf;
  if (!strongSelf)
      return;
  strongSelf->_authenticationVC = nil;
  if (callbackURL) {
    [strongSelf->_session resumeExternalUserAgentFlowWithURL:callbackURL];

Я использую этот код, чтобы открыть ссылку,

SFSafariViewController *svc = [[SFSafariViewController alloc] initWithURL:URL];
svc.delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
[self presentViewController:svc animated:YES completion:nil];

Я надеюсь, что SSO будет работать между SFAuthenticationSession и SFSafariViewController.

Большое спасибо.

0 ответов

Я предполагаю, что вы пытались использовать WKwebView. В таком случае wkwebview не передает файлы cookie с веб-браузером Safari. Каждое веб-представление выполняется в отдельном процессе, отличном от изолированного.

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