ADAL.js 是否支持带有 PKCE 扩展的新授权码授权?

Does ADAL.js support the new Authorization code grant with PKCE extensions?

根据 https://oauth.net/2/grant-types/implicit/ 上的新安全准则,不建议使用隐式流。由于ADAL.js使用隐式流,是否会受到影响,是否建议新应用使用ADAl.js隐式流?

是的,我同意根据新指南,不建议使用隐式流程。目前,ADAL js 使用 OAuth 2.0 隐式流程,出于安全原因,它不会 return 刷新令牌(刷新令牌的生命周期比访问令牌长,因此在恶意行为者手中更危险)。

当请求令牌的资源与客户端应用程序相同时,它被设计为 return ID 令牌。当 ID 标记被 returned 时,它被库缓存。 所以当我们使用authenticationContext.acquireToken(resource, callback)时,它允许应用静默获取令牌,而不需要再次提示用户。 ADAL js 使用隐藏的 Iframe 向 Azure AD 发出令牌请求。

但是要使用 PKCE 流程,我们可以通过传递 code_verifier 和其他参数来对 https://login.microsoftonline.com/tenant_id/outh2/authorize endpoint by passing code_challenge along with other parameters in the body and gets the authorization code. And use that code and make a call to https://login.microsoftonline.com/tenant_id/outh2/token 端点进行 http post 调用在正文中并获取令牌。

如果您正在使用 SPA,并且没有后端组件或打算通过 JavaScript 调用 Web API,请使用 OAuth 2.0 隐式授权流程。 但是如果你有一个后端组件并且你正在从后端代码中使用 API 那么隐式流就不适合了。在这种情况下,您可以使用 OAuth2.0 授权代码授权流程或 OAuth2.0 客户端凭据授权流程,它提供了获取令牌的能力,这些令牌反映了分配给应用程序本身的权限。