【问题标题】:Does Azure AD support Authorization Code Flow with PKCE for Single page applicationsAzure AD 是否支持使用 PKCE 进行单页应用程序的授权代码流
【发布时间】:2020-05-05 19:14:21
【问题描述】:

我正在考虑使用 pkce 将我的 Angular 应用程序中的身份验证流程从隐式流程升级为授权代码流程。我使用 Azure AD 作为身份验证提供程序。

我没有在 Microsoft 文档中找到与 spa 的 pkce 流相关的文档。 Auth0从去年就已经开始支持pkce了,想知道Azure ad是否支持。或者,如果它在他们未来的路线图中。

【问题讨论】:

    标签: angular azure oauth-2.0 azure-active-directory single-page-application


    【解决方案1】:

    Azure AD 在 v1.0 和 v2.0 端点上都支持 PKCE

    您可以找到 v2.0 文档here 以及 v1.0 文档here

    【讨论】:

    • 感谢@harikrishna,我已经成功地将我的代码从隐式流升级到了pkce(小精灵)。
    • 能否告知 Azure pkce 支持的正式发布日期。谢谢。
    【解决方案2】:

    Microsoft 最近修复了 CORS 问题。 需要更改 -

    更改您的重定向 URI 类型以启用 CORS。为此,您可以转到门户中应用注册的清单编辑器,找到 replyUrlsWithType 部分并将重定向 URI 的类型更改为 SPA。这可能会从 Web 平台身份验证选项卡中删除受影响的重定向 URI - 没关系!我们正在为此设置 UI。

    来源:https://www.npmjs.com/package/@azure/msal-browser

    【讨论】:

    • 谢谢,我已经在应用程序清单中进行了更改,并且 PKCE 在我的 Angular 应用程序中按预期工作。实际上,我使用的是 OIDC-client-js 库,集成要容易得多。谢谢
    【解决方案3】:

    是的。 Azure AD 平台在 v1.0 和 v2.0 终结点上都支持 PKCE。但是对于 SPA,例如Angular,它不是微软官方支持的。对于 Angular,只有隐式流的示例。

    https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-angular

    其他一些库支持带有 AzureAD 的 PKCE,例如https://github.com/damienbod/angular-auth-oidc-client。 使用 autor 的 PCKE 示例:https://github.com/damienbod/AzureAD-Auth-MyUI-with-MyAPI

    但并非用户视图中的所有功能都如此完美,例如通过切换标签,通过一些令牌刷新。最好先查看问题清单,然后再做决定。

    【讨论】:

      【解决方案4】:

      之前我发布过 PKCE 不受支持,但现在不再如此。如果它有帮助,这里是一个 PKCE 代码示例和博客文章,它将为读者提供一些比较的东西:

      应该可以只重新配置 JSON 配置文件以使示例正常工作。但是请注意,我使用的是基于标准的认证库,而不是 Microsoft 特定的库。

      【讨论】:

      • 现在,我可以使用 Azure AD 和 OIDC 在我的 Angular 应用程序中实现 PKCE。
      • @PrateekKumarDalbehera 你能告诉我你是怎么做到的吗谢谢
      • @GaryArcher 您好,感谢您的帮助。请检查我的post。我已经悬赏了。
      • 如果您正在使用交互式用户构建 SPA,您应该使用授权代码流 (PKCE) 并根据OAuth for Browser Based Apps 重定向用户登录。在您的问题中,您能否描述为什么您试图在没有用户重定向的情况下获取令牌。这感觉像是一个无法通过安全审查的解决方案,因为任何用户都可以通过浏览器工具获取机密 - 但也许我误解了。
      猜你喜欢
      • 1970-01-01
      • 2021-04-01
      • 2019-08-22
      • 2020-03-12
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      相关资源
      最近更新 更多