【问题标题】:How to implement Authorization Code Grant with PKCE in Angular6+ applications如何在 Angular6+ 应用程序中使用 PKCE 实现授权码授予
【发布时间】:2020-08-14 07:34:54
【问题描述】:

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

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

我正在开发一个 Angular6+ 应用程序,我必须将它与 AZURE AD 集成。当我检查 MSAL 库的角度时,我只能找到 1 个版本“npm i @azure/msal-angular”,我假设它实现了“隐式授权流”。我必须实现'auth code flow'。

任何人都可以在这方面提供帮助。

【问题讨论】:

    标签: angular oauth oauth-2.0 msal implicit-grant


    【解决方案1】:

    这里有两个混淆,一个是关于流的安全性,另一个是关于 MSAL 是否支持 auth code (w/ PKCE)。

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

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

    1. 在 Angular 中使用 MSAL.js

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

    【讨论】:

    【解决方案2】:

    当我第一次发布此内容时,我相信 MSAL 库 did not support 授权代码流 (PKCE) - 但现在已经改变 - 请参阅上方和下方的 cmets

    其他选择?

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

    例如,我对 Azure AD 和其他提供程序都使用了 oidc-client library

    【讨论】:

    猜你喜欢
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 2021-10-15
    • 2017-03-06
    • 1970-01-01
    • 2019-07-07
    • 2021-08-10
    相关资源
    最近更新 更多