如何在 Angular6+ 应用程序中使用 PKCE 实现授权码授予

Sne*_*eha 5 oauth oauth-2.0 azure-ad-msal angular implicit-grant

我需要一些输入来在 Angular6+ 应用程序中实现 MSAL 库以与 AZURE AD 集成。

当我阅读微软文档时,我遇到了两个流程“隐式授权流程”和“授权代码流程”。微软团队自己建议,必须实现“身份验证代码流”,因为与“隐式授权流”相比,它更安全。

我正在开发 Angular6+ 应用程序,我必须将其与 AZURE AD 集成。当我检查 MSAL 库的 Angular 时,我只能找到 1 个版本“npm i @azure/msal-Angular”,我认为它实现了“隐式授权流程”。我必须实现“身份验证代码流”。

有人可以在这方面提供帮助吗?

der*_*sen 5

这里有两个困惑,一个是关于流的安全性,另一个是关于 MSAL 是否支持身份验证代码(w/PKCE)。

  1. 身份验证代码流与隐式流

您不应该将其理解为“身份验证代码是安全的,而隐式流程是不安全的”。这些是相对术语;也就是说,auth core 被认为比隐式流更安全。然而,在某些用例中,隐式流被认为同样好(例如,用户会话超时很短)。互联网上对此存在一些争论。

  1. 将 MSAL.js 与 Angular 结合使用

当前的MSAL.js 2.x (msal-browser) 实现了身份验证代码 (w/ PKCE) 流程。您没有理由不在 Angular 项目中使用它。还有一个MSAL-Angular包装器库,它带有一些额外的功能和粘合代码,并且它是实现隐式流的库(因为它基于 MSAL.js 1.x 又名 msal-core)。但是,您不必仅仅因为您有 Angular 项目就使用它。相反,您可以直接使用 MSAL.js 2.x 创建自己的身份验证服务。


Gar*_*her 0

当我第一次发布此内容时,我相信 MSAL 库不支持授权代码流 (PKCE) - 但现在已经改变 - 请参阅上面和下面的评论

其他选择?

当然,OAuth 是关于标准的 - 而 Azure AD 是基于标准的 - 因此你可以为你的技术堆栈使用任何受人尊敬的库。

作为示例,我针对 Azure AD 和其他提供商使用了oidc-client 库