【问题标题】:Does MSAL.js support the check_session_iframe OIDC endpoint?MSAL.js 是否支持 check_session_iframe OIDC 端点?
【发布时间】: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


    【解决方案1】:

    不幸的是,此时 MSAL.js 没有与 checksession 端点集成的 API。如果您希望看到此添加,欢迎您在our Github 上打开 PR。

    【讨论】:

    • 感谢您的确认。很高兴有一个明确的答案。在我的实现中可能不需要它,但如果需要,我会考虑编写代码?
    • 了解为什么不包括在内会很有用。 MSAL.js 当前是否打算成为仅脱机访问的库,因此使用刷新令牌而不是会话状态?我很好奇,因为 afaik 通常不鼓励在浏览器中刷新令牌。
    • 几个原因:首先,ADAL.js 和 MSAL.js 没有使用 checksession 端点,其次,因为 MSAL.js 使用 Auth Code Flow 来缓解第三方 cookie 阻塞引起的问题.所以是的,v2 使用刷新令牌来获取/更新访问令牌,而不是隐藏 iframe 中的 cookied 请求。
    • 关于基于浏览器的应用程序的指南已经改变,现在鼓励使用带有 PKCE(MSAL.js 实现)的身份验证代码流,而不是隐式流:datatracker.ietf.org/doc/html/…跨度>
    • 第一条评论应该说:“ADAL.js and MSAL.js v1 did not use...”
    猜你喜欢
    • 2021-05-01
    • 1970-01-01
    • 2017-08-05
    • 2019-04-19
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    相关资源
    最近更新 更多