具有 CAS 身份验证流程的 iOS 原生 PWA 在 Safari 中被阻止

问题描述 投票:0回答:1

我正在开发一个 Web 应用程序,该应用程序将 SSO 与外部 CAS 服务器结合使用。流程是:

  1. 访问 Web 应用程序 (myapp.com) 时,用户会被重定向到表单 (whereareyoufrom.com/form),该表单会重定向到正确的 CAS 服务器登录页面 (iamfromhere.com/login)。
  2. 用户登录CAS服务器登录页面(iamfromhere.com/login)。
  3. 用户被重定向到网络应用程序。

使用 PWABuilder 创建了一个封装 Web 应用程序的 Android 应用程序,效果很好。

在 iOS 上也使用 PWABuilder 创建了相同的封装 Web 应用程序,它创建了一个带有 WebView 的本机 Swift 应用程序,允许在本机 iOS 应用程序中加载 PWA。但身份验证工作流程无法正常工作。

我可以在 iOS 应用程序中正确访问 CAS 服务器的登录页面 (iamfromhere.com/login)。但是,提交表单时,Safari 中会打开一个新窗口(看起来位于 iOS 应用程序之外),并再次显示相同的登录页面 (iamfromhere.com/login)。

如果我尝试再次提交表单,我将被重定向到正确登录的身份提供商网站 (iamfromhere.com/home),而不是被重定向到 iOS 应用程序 (myapp.com/home)。 如果我关闭浏览器窗口,我会在第一个 iamfromhere.com/login 上返回到 iOS 应用程序。

Here is a diagram of the flow. 绿色实线箭头表示正常工作,绿色虚线箭头表示预期行为,蓝色箭头表示发生的情况和预期之外的情况。

manifest.json
文件将
display
设置为
standalone
。 封装的PWA部署目标是iOS 13。 在 Xcode 模拟器 iPhone 15 pro - iOS 17、带有 iOS 17 的真实 iPhone 13 和带有 iPadOs 16.7.4 的第五代 iPad 上遇到了该行为。

我没有 PWA 和 iOS 方面的专业知识,但我尝试过但没有成功:

  1. WebView.swift
    文件中,将
    config.limitsNavigationsToAppBoundDomains
    设置为
    false
  2. 在我的
    <meta name="apple-mobile-web-app-capable" content="yes">
    中添加
    index.html
  3. 将所有外部域名添加到 PWA 允许的 URL

编辑: 我设法通过将域 iamfromhere.com 添加到

authOrigins
中的
Settings.swift
WKAppBoundDomains
中的
Info.plist
来使身份验证流程正常工作。 但是,该应用程序仍会在 Safari 的新窗口中作为重复项打开。

ios swift webkit progressive-web-apps
1个回答
-2
投票

@agatherc 你解决这个问题了吗?我遇到了与新 Safari 窗口打开相同的问题,这破坏了我们的身份验证流程。 (抱歉,我还没有评论权限)

如果有帮助,很明显,在第二个窗口中,它正在发出 GET 请求,而不是像应有的那样在原始窗口中进行 POSTing。

此外,当按下提交按钮时,我在 XCode 模拟器控制台中看到了这一点:

-[RTIInputSystemClient remoteTextInputSessionWithID:performInputOperation:] perform input operation requires a valid sessionID
© www.soinside.com 2019 - 2024. All rights reserved.