使用 ADAL 和 ADAL JS 获得的 AD 令牌之间的区别



>我有一个独特的方案,即使用 Open ID Connect 中间件对 Azure AD 进行身份验证,现在一旦应用程序经过身份验证并建立了会话,我就需要对位于同一服务器上的 WebAPI 服务进行 AJAX 调用。

我计划将服务器上缓存的 Id/访问令牌返回给客户端并将其存储在会话存储中。

这种方法是否有任何安全隐患,我的意思是通过 ADAL JS 或 ADAL 获得的令牌之间有什么区别吗?

我不建议这样做。机密客户端获取的访问令牌和 ID 令牌与公共客户端获取的令牌的形式不同,在通过隐式流颁发的 Azure AD 令牌中,由于旨在包含其大小的启发式方法,因此存在额外的差异。有一个更干净的解决方案适用于你的方案。使用 OpenID Connect 登录后,浏览器将具有与 Azure AD 的会话 Cookie。如果您在页面中注入了一个隐藏的 iframe,并且使用该 iframe 通过 javascript 驱动对令牌的隐式授权请求,则可以让 JS 前端获取自己的令牌,而不必循环拓扑中其他地方获取的令牌。这正是 ADAL 用于续订令牌和在登录后获取新令牌的功能。遗憾的是,我们没有此方法的示例,但可以检查 ADAL JS 的源代码以了解其工作原理。

最新更新