我不确定是否有一种“适当的”方法,但是在我只是拼凑出我自己的不兼容实现之前,也许所有标准中都有一些东西可以满足我的需要?
情况是这样的:苹果公司已经宣布,他们的手机上的应用程序必须包括所有标准的功能本身.没有更多的iframe与网页内容!如果你需要显示来自网络的东西,打开系统浏览器(Safari)!不幸的是,我们需要显示来自网络的东西,所以在这里我们去.
现在,应用程序需要用户之前进行过的身份验证。我们存储所需的任何令牌。当打开浏览器时,我们不希望强制用户重新进行身份验证。我们需要以某种方式将访问凭据传递给浏览器,并且最好安全地执行此操作。此外,浏览器中的网页将需要从我们的OpenID Connect服务器获取令牌。
不幸的是,应用程序和浏览器之间的唯一通信点是URL,所以我们给予的一切都将在那里,在众目睽睽之下。我知道OAuth非常担心这一点,以至于他们不可能只使用屏幕上可见的东西来拦截身份验证,而是使用一次性中间代码,反向通道和PKCE等东西。
不幸的是,我看不到任何方法可以使用默认的流“开箱即用”来实现我所需要的。我可以想到对这些流的修改,但我不是安全Maven,所以我宁愿使用经过Maven审查的标准。
1条答案
按热度按时间smdncfj31#
酒店SCENARIO
这是一个很好的问题,因为许多公司希望在移动的应用程序中以安全的方式显示现有的Web内容,并避免额外的登录。
通过断开连接的浏览器实现Web +移动的集成解决方案?
理想情况下,你想做的是将移动的应用的JWT传递给HTTP头中的外部Web内容。
您可能需要在查询字符串中传递JWT,在这种情况下,我会尝试遵循signed request model,尽管它并不简单。我使用过SalesForce签名请求,尽管我自己没有实现完整的解决方案。
你会想要防止原始令牌被写入Web服务器日志.我相信这种类型的PF解决方案的建议是使用一次性密钥,如上面的链接中所述.当然,Web会话将有一些限制,如沉默令牌续订不工作.
通过WKWEBVIEW实现Web +移动的集成解决方案
在过去,我通过让Web UI从移动的应用程序获取访问令牌来管理移动的应用程序中的安全Web内容。这可以实现集成的UX,并且您可以使用“尽可能标准”的OAuth解决方案。
有效使用网页浏览?
在大多数情况下,Web视图可能不是一个好的长期解决方案。我知道,如果苹果使用以下任何行为,他们很可能会reject apps in 2020:
我怀疑WKWebView的使用是负责任的和可信赖的,但我可能是错的,所以请不要相信我的话。
更新
出于兴趣,有一个nonce pattern可以潜在地用于在Web和移动的应用程序之间共享数据,尽管更简单的选择通常只是使用API共享数据,并多次写入视图。