聚合物2与外部登录

我遵循Polymer 2教程,并创建了几个带有index.html的测试应用程序,它加载了应用程序外壳组件,然后根据需要加载所有子组件。

现在在我的真实应用程序中,我有一个SPA和一个Rest后端,我需要用户首先使用外部令牌服务提供程序(TSP)登录以访问大部分后端界面。 后端知道TSP,并且每当需要经过身份验证的用户进行REST调用时,后端默认会将客户端重定向到TSP的登录页面(如果尚未登录)。 登录页面然后会重定向回我的应用程序。

问题是我目前的Polymer应用程序外壳已经加载了太多东西,需要一段时间才能加载,以确定用户尚未登录并需要重定向到TSP。

处理这种外部登录场景的一般方法是什么? 我是否应该有一个缩小的起始页面,除了重定向到登录页面外别无其他? 那么当用户从登录名重定向时,我将如何加载实际的应用程序? 所有与服务人员和那些东西都在一起吗?

更新

关于环境的更多信息:

客户端:带oidc-client.js的Polymer 2(基于浏览器的JavaScript应用程序的OpenID Connect(OIDC)和OAuth2协议支持)

服务器端:ASP.NET Core 2.0具有为Polymer提供的静态文件服务,以及用于访问数据库的REST接口。 例如在端口5000上运行。

令牌服务提供商:我的定制服务,基于IdentityServer4(用于ASP.NET Core的OpenID Connect和OAuth 2.0框架)。 例如在端口5001上运行。

oidc-client是Polymer应用程序中的组件,它可以检测用户是否登录。如果不是,它将重定向到IdentityServer以获取登录掩码,并且在成功登录后,用户将重定向到Polymer应用程序,然后该应用程序可以加载所有可访问给定用户的内容/组件。


经过多次测试,我认为我找到了一个解决方案:

这个想法只是简单地在两个阶段加载应用程序。

阶段1:index.html除了用于外部认证的oidc-client.js以及包含在默认聚合物index.html中的元信息,favicon和主屏幕图标内容之外,不包含任何内容。 也许一个小的等待动画,但没有视觉元素,网络组件的东西,没有聚合物! 这应该尽可能快地加载并且只检查认证状态。 如果用户未通过身份验证,则会将其重定向到外部登录页面。 如果它已经通过身份验证,则会重定向到第2阶段。

第2阶段:start.html,以前是Polymer默认的index.html。 我推出了favicon和主屏幕的东西,因为它现在处于第1阶段。该文件加载了Web组件应用程序外壳。 如果应用程序中的REST调用导致401(未授权),则必须检查该用户是否未通过身份验证或者没有权限。 在前一种情况下,用户被重定向到第1阶段。为此,实际的应用程序还需要oidc-client.js!

链接地址: http://www.djcxy.com/p/5337.html

上一篇: Polymer 2 with external login

下一篇: Polymer CLI multiple elements on a page and duplicate calls