使用 Angular 和 NGINX 的 Shibboleth 身份验证

Shibboleth authentication with Angular and NGINX

我有一个通过 Shibboleth 验证的 Angular 应用程序。当用户导航到该页面时,NGINX 会将他们重定向到 Shibboleth 登录。对应用程序的访问由 NGINX 管理。如果用户已经登录并进入应用程序,他们可能会在那里停留相当长的时间。 Shibboleth 登录超时,但 Angular 应用不知道这一点,这会导致应用必须与之通信的服务出现问题。 如何让 Angular 检查 Shibboleth 是否已登录? 或者(作为解决方法)当用户单击提交按钮以使用服务时,我如何强制浏览器刷新(这会导致 NGINX 检查登录状态)?

谢谢

如果我回答你的问题是正确的, 您有一个应用 https://example.com.

您已在这一端实施 SP 并保护 - 授权 整个网站 - 而不是任何特定路径。因此,每当用户访问该网站时,nginx 都会向某些 IdP 验证 用户。

现在的问题是,当您在 angular 应用程序中导航时,由于 pushState 实现,请求不会转到 nginx,因此您无法检查用户会话是否处于活动状态。

如果是

然后我相信您需要在 angular 应用程序中创建一个 auth-gaurd,它会检查每个页面上的有效会话 - 将在每个路由中注入的 auth guard。

您可以使用以下网址检查会话有效性, https://example.com/Shibboleth.sso/Session https://example.com/Shibboleth.sso/Status