问题标签 [aswebauthenticationsession]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3125 浏览

swift - 在 SwiftUI 中使用 ASWebAuthentication

在 SwiftUI 视图中进行身份验证工作时遇到了一些麻烦。我正在使用 ASWebAuthentication ,每当我运行时都会出现错误:

如果不提供演示上下文,则无法启动 ASWebAuthenticationSession。在调用 -start 之前设置presentationContextProvider。

我正在创建一个 ViewController 并基于此堆栈溢出帖子传递对 Scene Delegate 窗口的引用,但该答案似乎对我不起作用。我也发现了这个 reddit 帖子,但我有点不清楚他们是如何在设置场景委托的窗口之前用窗口初始化视图的。

这是我用于 SwiftUI 视图的代码:

在 SceneDelegate 中:

知道我怎样才能完成这项工作吗?

0 投票
3 回答
4836 浏览

ios - 如何使用 ASWebAuthenticationSession 获取授权码?

我正在尝试使用 ASWebAuthenticationSession 从 Stripe 的 OAuth 端点获取身份验证代码- 此事件发生在调用我的 Stripe 重定向 url 之后。

不幸的是,authSession 的完成处理程序不会使用 callbackURL 进行回调。我需要这个 callbackURL 来查询授权码。我已经阅读了关于这个主题的不同文章,但我不明白为什么我的实现不能按照我期望的方式工作。

这是我的代码:

0 投票
1 回答
1265 浏览

ios - 没有为 ASWebAuthenticationSession 调用会话完成处理程序

我正在尝试使用 ASWebAuthenticationSession 网络视图。身份验证完成后,不会调用会话完成处理程序。因此,网络视图不会关闭。

我在 info.plist 中设置了回调 url 方案。同样在 Targets -> info -> URL Types 中更新它看起来像: URL Types

运行上述代码后,会出现 ASWebAuthenticationSession Web 视图,它为用户提供登录页面。身份验证完成后,Web 视图不会像 WKWebView 那样关闭。Web 视图的左上方有取消选项,它会调用错误的完成处理程序。

身份验证会话完成后有没有办法关闭 webview?

0 投票
0 回答
666 浏览

swift - 在 iOS 11 和 iOS 12 上注销后的 ASWebAuthentication 和 SFAuthentication 登录问题,无法使会话无效

我正在使用ASWebAuthentication and SFAuthentication在 OAuth2 服务器上进行身份验证grant_type : authorization_code

一切都很完美,除了:

  1. 用户登录成功
  2. 注销者revoking access token and refresh token with status code :200
  3. 测试撤销有效<------
  4. 用户按下login againopens ASWebAuthentication or SFAuthentication according the iOS版本,goes directly in the app就像会话正在验证令牌以某种方式有效。
  5. 在 iOS 13 上,ASWebAuthentication 提供了prefersEphemeralWebBrowserSession = true解决问题的方法,但对于 iOS 11/12,我似乎无能为力(除了问题可能出在后端)

当我登录时,我正在传递参数prompt:login,但它仍然没有帮助。

问题

  1. 我可以做些什么来使 iOS 11/12 上的 ASWebAuthentication 和 SFAuthentication 上的会话无效,类似于 iOS 13 prefersEphemeralWebBrowserSession?(我在文档上没有找到任何东西。Apple 不允许任何东西)
  2. 这是可以在前端(iOS)上解决的问题还是后端问题?

谢谢

仅为文档提供代码

0 投票
1 回答
711 浏览

ios - AsWebAuthenticationsession 是否支持通用链接?

我使用 AsWebAuthenticationsession 从另一个应用程序向我的应用程序进行身份验证。我打开 AsWebAuthenticationsession,它会重定向我的应用程序的通用链接。问题是当它重定向我的应用程序通用链接时,它要求打开 App Store。当它重定向时,我想关闭会话。但是 AsWebAuthenticationsession 只需要一个自定义的 URL Scheme。如何安全地处理它(因为自定义 URL 方案不安全:RFC8252 7.1

0 投票
0 回答
550 浏览

ios - ASWebAuthenticationSession 无法修改警告对话框

我正在尝试使用我的 iOS 应用程序实现一些不同的身份验证机制。关键是 iOS 应用程序是通过 App Store 分发的,并且它连接的服务器是开源的。为此,客户应设置自己的服务器。这很像 RocketChat 应用程序的工作方式。在设置服务器时,用户可以定义他们想要使用的身份验证提供程序。所有的身份验证数据、客户端 ID、机密等都存储在服务器端。服务器应用程序使用 passportjs 来支持各种不同的身份验证策略。这意味着像 oauth 之类的事情是通过服务器完成的,并且 oauth 回调会访问服务器 url。从那里,服务器可以在身份验证后创建/映射用户到本地帐户,在应用程序中控制授权/访问。

例如,当执行 oauth 时,url 将类似于:

从那里,passportjs 将重定向到谷歌进行身份验证。

关于这个问题,我需要在 iOS 中启动一些东西来启动身份验证。似乎在这种情况下使用正确的是ASWebAuthenticationSession。但是,当使用 ASWebAuthenticationSession 时,会出现一个警告对话框,指出初始的“customserver.com”:

[App] 想要使用“customserver.com”登录 这允许应用程序和网站共享有关您的信息

虽然这是真的,但服务器(使用 passportjs)将重定向到身份验证提供程序站点。在这种情况下,让我们以 google oauth 为例。这意味着这种模式警告非常令人困惑,它指出 customserver.com 是身份验证提供者,而实际上 passportjs 正在重定向到谷歌(或其他一些)身份验证提供者。

尽管 ASWebAuthenticationSession 使这个流程变得非常简单,但它没有而且可能无法监控到 google 的初始重定向这一事实让用户感到困惑。有了这个,我还研究了使用 SFSafariViewController 并在应用程序中创建一个深层链接以匹配重定向方案。虽然不如 ASWebAuthenticationSession 干净,但它确实有效,因为没有模式对话框警告用户。我什至可以创建自己的自定义模式对话框,如果我愿意,它会警告用户正确的身份验证站点。

这导致我提出几个问题。

  1. 在使用 ASWebAuthenticationSession 时,是否有办法绕过或自定义呈现给用户的消息?

  2. 假设#1 的答案是否定的,使用 SFSafariViewController 是解决该消息的可接受解决方案吗?

0 投票
2 回答
1259 浏览

ios - 如何让密码自动填充与 ASWebAuthenticationSession 一起使用?

我有一个遵循密码自动填充要求的示例 HTML 表单。在没有应用程序的情况下导航到网页时,使用内置的 Safari 应用程序,登录和注册表单的本机密码自动填充对话框正确显示:

在此处输入图像描述

但是,在应用程序中查看时,相同的流程不会在登录或注册提交中触发对话框。它只是关闭登录/注册屏幕而没有任何错误。

这就是我的视图控制器的样子:

有没有办法让密码自动填充通过移动应用程序工作ASWebAuthenticationSession?我也试过SFSafariViewController但同样的问题。我在这里有一个示例 iOS 应用程序。非常感谢任何帮助或经验!

0 投票
2 回答
435 浏览

ios - 向下滑动关闭时 ASWebAuthenticationSessionError.canceledLogin 不会触发

我正在创建一个ASWebAuthenticationSession会话,并且在完成处理程序中,当用户取消登录时,我有清理任务:

在 iOS 13+ 中,用户可以向下滑动以关闭,但在这种情况下根本不会触发整个完成处理程序。我不想通过启用 isModalInPresentation 来禁用此手势。

有没有办法让 ASWebAuthenticationSessionError.canceledLogin 在这种情况下触发,或者我如何检测用户向下滑动以取消ASWebAuthenticationSession会话?

0 投票
1 回答
77 浏览

ios - 删除 ASWebAuthenticationSession WebView 中的取消按钮

我正在使用ASWebAuthenticationSession并想删除cancel导航栏按钮,以便用户无法关闭窗口(使用该应用程序需要强制验证)

我找不到实现此目的的方法,因为ASWebAuthenticationSessionwebview 对我们隐藏,因此我们无法自定义它。

有什么方法可以混合删除左栏按钮项吗?我在这里的知识很薄,但我看不到在我们无法访问的视图上隐藏栏按钮项目的任何其他方式

感谢您在这里的任何帮助或建议

在此处输入图像描述

0 投票
0 回答
134 浏览

ios - SFAuthenticationSession、ASWebAuthenticationSession 通用链接重定向 url

我还是不太明白。

据我了解,我们应该进行https重定向而不是使用自定义 url 方案,因为每个人都可以将自定义方案定义到他们的应用程序中。那么为什么 Apple 的解决方案SFAuthenticationSession(used before iOS 12)设计ASWebAuthenticationSession为使用自定义 url 方案?

我们启用了通用链接,所以我认为使用通用链接应该相当容易。为了测试我是否将 https 重定向传递给并在应用程序委托ASWebAuthenticationSession中的回调中检查了重定向。application:continueUserActivity:restorationHandler:有效。SFAuthenticationSession另一方面,在 iOS 11 上尝试相同的操作失败了。

我在这里忽略了什么吗?这真的不是一个安全问题,还是我在错误的地方收听以获得回调SFAuthenticationSession