【发布时间】:2022-02-10 07:32:11
【问题描述】:
我正在开发一个 SPA,它依赖于 Identity Server 的实例来验证用户。我需要一个在本地管理我的令牌的解决方案,但 Duende(Identity Server 的所有者)倾向于使用后端换前端 (BFF) 模式而不是 Javascript 库。这对我们不起作用。由于不再维护由 Identity Server 的作者编写的原始 oidc-client,我一直在寻找 Javascript 替代方案。最有可能的候选者似乎是 Microsoft 的 MSAL.js,它是为 Azure AD 构建的,但据说支持 OIDC 标准。
据我所知,MSAL.js 使用刷新令牌强制您使用离线访问路径来更新安全令牌。即使我没有明确要求offline_access 范围,库仍然会附加一个!但我的用例不需要刷新令牌。相反,我希望我的客户使用 OIDC 会话管理标准(通过提供商众所周知的 JSON 公开的 check_session_iframe 端点)使身份提供商上的会话保持新鲜。
我发现,如果我忽略 MSAL.js 库请求的 offline_access 范围,那么我的身份提供者只会发布 ID 令牌和访问令牌,那么 MSAL 将继续正常工作。它甚至有一个ssoSilent 选项,用于通过隐藏 iframe 中的连接/授权请求显式更新令牌。但据我所知,我不能让库像以前的 oidc-client 那样通过 iframe 保持会话新鲜。
因此,鉴于会话管理是 OIDC 规范的一部分,并且 MSAL 应该是符合 OIDC 的库,我是否遗漏了什么?
【问题讨论】:
标签: identityserver4 openid-connect msal.js duende-identity-server