是否可以在不重定向到外部登录页面的情况下进行SPA身份验证

问题描述 投票:6回答:2

我目前正在开发一个连接到一堆webAPI的SPA应用程序。这些API要求用户登录,因此我开始深入研究Openid Conect和OAuth2示例,主要使用IdentityServer。

出于SPA原因,它们都需要使用隐式授权来检索access_tokens。处理令牌刷新使用隐藏的iframe连接到身份验证服务器。

我从这种方法中理解的是,更新access_token是在会话中维护身份验证服务。隐藏的iframe进入身份验证服务器,会话仍处于活动状态,提供了新的access_token。

所有这些对我来说都很好,除了(因为UX原因)我的用户需要被重定向到身份验证服务器页面以提供凭据。

是不是可以让我的SPA应用程序向身份验证服务器发送凭据,获取access_token,然后使用隐藏的iframe进行刷新以进行静默续订(我们显然不希望用户每15分钟或每小时继续通知凭据..)。

如果出于安全原因这是不可接受的,您能解释一下原因吗?

authentication single-page-application identityserver3 openid-connect identityserver4
2个回答
0
投票

从技术上讲,它可以使用“resource owner password flow”,但在该模型中,身份提供者不能信任您的应用程序,也不会为您的用户创建会话(稍后使用静默更新)。因此,这种非交互式方法不是真正的SSO。 对于2019年,任何Web应用程序(如Angular SPA)的推荐流程都是带有PKCE扩展的代码流程,如herethere所述。


-1
投票

这正是oidc-client-js库所做的。在他们的维基页面中查看automaticSilentRenew设置。可以理解,只有在身份验证服务器上的会话仍处于活动状态时,此方法才有效。

© www.soinside.com 2019 - 2024. All rights reserved.