我目前正在开发可连接到大量webAPI的SPA应用程序。这些API要求用户登录,因此我开始使用OpenServer深入研究Openid Conect和OAuth2示例。
由于SPA的原因,它们都要求将隐式授予用于检索access_tokens。 token 刷新是使用隐藏的iframe连接到身份验证服务器来处理的。
我从这种方法中了解到o更新您的access_token的是, session 是在身份验证服务上维护的。隐藏的iframe进入身份验证服务器, session 仍处于事件状态,提供了新的access_token。
所有这些对我来说都很不错,除了(对于UX reasosn),我的用户需要重定向到身份验证服务器页面以提供凭据这一事实除外。
我的SPA应用程序是否有可能将凭据发送到身份验证服务器,获取access_token,然后使用隐藏的iframe进行刷新以进行静默更新(我们显然不希望用户每15分钟或每小时保持一次通知凭据) ..)。
如果出于安全原因这是 Not Acceptable ,请您解释一下原因?
最佳答案
从技术上讲,可以使用“resource owner password flow”,但是在该模型中,身份标识提供者不能信任您的应用程序,也不会为您的用户创建 session (稍后使用静默更新)。因此,这种非交互式方法并不是真正的SSO。对于2019年,对于任何Web应用程序(例如Angular SPA),建议的流程都是带有PKCE扩展名的Code flow,如here或there所述。
关于authentication - 是否可以在不重定向到外部登录页面的情况下进行SPA身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45817432/