具有 Web 视图的本机移动应用程序的 SSO 方法?



因此,原生移动应用程序(Android和iOS(的标准SSO方法似乎是OAUth2 + OpenID Connect通过AppAuth库。

这一切都很好 - 实际上似乎接近优雅。

但是,如果同一应用包含嵌入式 Web 视图组件,这些组件需要使用相同的 SSO(与本机代码在同一 Web 应用中的同一服务器上,其中所有资源都需要身份验证才能访问(怎么办?

对于初学者来说,OAuth2 访问令牌(一旦获得(不会自动传播到 Web 应用程序中的超链接请求等,对吗? 那么 Web 应用程序页面本身真的必须使用 JavaScript 进行返工才能进行此类传播吗? 移动应用程序可以重写请求来解决此问题,但是:

  1. 至少在Android上,这仅适用于GET请求(对吗?
  2. 更关键的是,这假设 Web 应用程序不需要在普通浏览器客户端中运行。

OAuth2 不是正确的方法吗? 如果是这样,这似乎是一种耻辱 - 因为AppAuth对于本机应用程序方面来说似乎相当不错。 它只是将基本的Web视图浏览混合到图片中,这确实使事情变得混乱。

或者只是有一些事实上的标准JavaScript库,可以与Angular或类似的东西混合在一起(然后需要使用Angular或类似的东西(?

AppAuth 的首席维护者。对于您所描述的内容,还没有标准的方法。IETF 的 OAuth2 for Native Apps BCP 朝着正确的方向采取了步骤(并启发了 AppAuth(,但没有介绍如何在应用和站点之间同步身份验证状态 - 这是留给读者的练习。

如果您主要关心的是用户浏览器中应用与其关联站点之间的身份验证状态一致,则最佳方法通常是通过 Android 上的自定义选项卡或 iOS 上的 SFSVC/SFAuthenticationSession 将身份验证委托给站点。身份验证将由站点管理,完成后,身份验证状态可以通过自定义方案或应用程序链接/通用链接共享回应用程序。

对于嵌入式 WebView,则相反 - 从应用中播种网站的 Web 视图视角,因为 Web 视图的状态不会保留,而应用的状态应该保留。

我希望有一个更好、更标准化的解决方案,并将为此努力,但就目前而言,定制的、按服务的解决方案是实用的。

相关内容

最新更新