因此,原生移动应用程序(包括Android和iOS)的标准SSO方法似乎是通过AppAuth库的OAUth2 + OpenID Connect。
这一切都很好 - 实际上似乎接近优雅。
但是,如果同一个应用程序包含需要使用相同SSO访问资源的嵌入式Web视图组件(在与所有资源需要身份验证访问的本机代码相同的Web应用程序中的同一服务器上),该怎么办?
对于初学者来说,OAuth2访问令牌(一旦获得)不会自动传播到Web应用程序中的超链接请求,对吗?那么,网页应用程序页面本身是否必须使用JavaScript进行重做以进行此类传播?移动应用程序可以重写请求以解决此问题,但是:
OAuth2不是正确的方法吗?如果是这样,那似乎是一种耻辱 - 因为AppAuth似乎对原生应用程序方面非常好。它只是将基本的网页浏览浏览混合到真正造成混乱的图片中。
或者是否只有一些事实上的标准JavaScript库可以与Angular等混合使用(然后需要使用Angular等)?
答案 0 :(得分:5)
这里是AppAuth的主要维护者。但是,对于您所描述的内容,还没有标准的方法。 IETF的本地应用程序BCP的OAuth2采取了正确方向的步骤(并启发了AppAuth),但没有介绍如何在应用程序和站点之间同步身份验证状态 - 这是留给阅读器。
如果您的主要关注点是应用程序与用户浏览器中相关网站之间的一致身份验证状态,则最佳方法通常是通过Android上的自定义标签或iOS上的SFSVC / SFAuthenticationSession将身份验证委派给网站。身份验证将由网站管理,一旦完成,身份验证状态可以通过自定义方案或应用程序链接/通用链接共享回应用程序。
在嵌入式WebView方面,相反的情况适用 - 从应用程序中查看webview的网站视角,因为在应用程序的状态应该是webview的状态不会持续存在。
我希望有一个更好,更标准化的解决方案,并将努力实现它,但现在定制的,每服务解决方案都是实用的。