首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASWebAuthenticationSession没有提供修改警告对话框的方法。

ASWebAuthenticationSession没有提供修改警告对话框的方法。
EN

Stack Overflow用户
提问于 2020-05-19 02:43:10
回答 1查看 758关注 0票数 2

我正在尝试用我的iOS应用程序实现几种不同的身份验证机制。关键是iOS应用程序是通过App分发的,它连接到的服务器是开源的。为此,预期客户将设置自己的服务器。这与RocketChat应用程序的工作原理非常相似。在设置服务器时,用户可以定义要使用的身份验证提供程序。所有的认证数据、客户ids、机密等都是存储在服务器端的。服务器应用程序使用passportjs支持各种不同的身份验证策略。这意味着像oauth这样的事情是通过服务器完成的,oauth回调访问服务器url。在认证之后,服务器可以创建/映射用户到本地帐户,在应用程序中使用授权/访问进行控制。

例如,在执行oauth时,url应该是这样的:

代码语言:javascript
复制
https://customserver.com/authentication/google

在那里,passportjs将重定向到google进行身份验证。

关于这个问题,我需要在iOS中启动一些东西来启动身份验证。在这种情况下,使用ASWebAuthenticationSession.似乎是正确的。然而,当使用ASWebAuthenticationSession时,有一个警告对话框,它声明初始的"customserver.com":

应用程序想要用“customserver.com”登录--这允许应用程序和网站分享关于你的信息。

虽然这是正确的,但是服务器(使用passportjs)将重定向到身份验证提供者站点。在本例中,让我们以google为例。这意味着这个模式警告非常混乱,它声明customserver.com是身份验证提供者,而实际上passportjs是重定向到google (或其他一些)身份验证提供程序。

尽管ASWebAuthenticationSession使得这个流程非常容易,但是它没有也很可能无法监视最初重定向到google的事实使用户感到困惑。在此基础上,我还研究了如何使用SFSafariViewController并在应用程序中创建一个深度链接,以匹配重定向方案。虽然不像ASWebAuthenticationSession那样干净,但这确实有效,因为没有警告用户的模态对话框。我甚至可以创建我自己的自定义模式对话框,如果我想的话,它可以警告用户正确的身份验证站点。

这让我想到了几个问题。

  1. 在使用ASWebAuthenticationSession时,是否需要绕过或自定义呈现给用户的消息?
  2. 假设#1的答案是否定的,那么使用SFSafariViewController是解决消息问题的一个可接受的解决方案吗?
EN

回答 1

Stack Overflow用户

发布于 2022-06-01 09:45:23

  1. 在iOS 15中,您对该模式的唯一配置可能是使用CFBundleName来控制您指示为应用程序的文本部分。
  2. 是的,这是一个可以接受的解决方案,它将增加您的解决方案的维护和一点点复杂性。

从安全性上讲,它是等价的只要你使用SFViewController。该模式并没有带来任何额外的保证,因为你可以很容易地使一个模式通过作为一个系统批准的。

作为一个次要的PKCE是移动应用程序oauth2的必修课。流。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61882371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档