使用 ADAL 和 ADAL JS 获得的 AD 令牌之间的区别
Difference between AD token obtained using ADAL & ADAL JS
我有一个独特的场景,其中使用 Open ID Connect 中间件针对 Azure AD 完成身份验证,现在一旦应用程序通过身份验证并建立会话,我将需要对 WebAPI 服务进行 AJAX 调用坐在同一台服务器上。
我打算 return 将服务器上缓存的 ID/访问令牌返回给客户端并将其存储在会话存储中。
这种方法是否有任何安全隐患,我的意思是通过 ADAL JS 或 ADAL 获得的令牌之间有什么区别吗?
我不建议这样做。机密客户端获得的访问和 ID 令牌不同于 public 获得的令牌,并且在 Azure AD 中,通过隐式流颁发的令牌由于旨在包含其大小的启发式方法而具有额外的差异。
您的方案有一个更清洁的解决方案。使用 OpenID Connect 登录后,您的浏览器就会有一个与 Azure AD 的会话 cookie。如果您在页面中注入一个隐藏的 iframe,并使用该 iframe 通过 javascript 驱动令牌的隐式授权请求,您可以让您的 JS 前端获取自己的令牌,而无需在拓扑中的其他地方循环获取的令牌。这正是 ADAL 为更新令牌和在登录后获取新令牌所做的工作。不幸的是,我们没有这种方法的示例,但您可以检查 ADAL JS 的源代码以了解其工作原理。
我有一个独特的场景,其中使用 Open ID Connect 中间件针对 Azure AD 完成身份验证,现在一旦应用程序通过身份验证并建立会话,我将需要对 WebAPI 服务进行 AJAX 调用坐在同一台服务器上。
我打算 return 将服务器上缓存的 ID/访问令牌返回给客户端并将其存储在会话存储中。
这种方法是否有任何安全隐患,我的意思是通过 ADAL JS 或 ADAL 获得的令牌之间有什么区别吗?
我不建议这样做。机密客户端获得的访问和 ID 令牌不同于 public 获得的令牌,并且在 Azure AD 中,通过隐式流颁发的令牌由于旨在包含其大小的启发式方法而具有额外的差异。 您的方案有一个更清洁的解决方案。使用 OpenID Connect 登录后,您的浏览器就会有一个与 Azure AD 的会话 cookie。如果您在页面中注入一个隐藏的 iframe,并使用该 iframe 通过 javascript 驱动令牌的隐式授权请求,您可以让您的 JS 前端获取自己的令牌,而无需在拓扑中的其他地方循环获取的令牌。这正是 ADAL 为更新令牌和在登录后获取新令牌所做的工作。不幸的是,我们没有这种方法的示例,但您可以检查 ADAL JS 的源代码以了解其工作原理。