在 react 应用中使用 PKCE 的身份验证代码流的 azure AD SPA

azure AD SPA using auth code flow with PKCE in react app

提问人:amar kumar 提问时间:7/10/2023 更新时间:8/2/2023 访问量:206

问:

我试图不让我的用户在登录一次后使用应用程序时一次又一次地登录,为此我正在尝试生成刷新令牌(已经拥有 accessToken 和授权代码以及 idToken,使用身份验证代码流),并使用刷新令牌刷新访问令牌。

我怀疑是否可以在不使用后端服务器的情况下生成刷新令牌,或者不使用身份验证流和 PKCE,或者如果我需要后端,那么如何处理它。或者有没有其他方法可以阻止登录的用户再次登录?有人可以帮我吗?

为此,我注册了一个 azure 应用程序,并从那里获取了该应用程序的凭据。从 azure link 到 azure doc 的文档中,我发现只有两种类型的可用流:隐式流和身份验证代码授予image from above mentioned doc。 在隐式流的文档中提到更喜欢身份验证流,所以我决定遵循它并使用身份验证代码流,但现在我被困在如何获取刷新令牌以供进一步使用。

Azure Authorization single-page-application client-side

评论

0赞 Gary Archer 7/14/2023
使用授权代码流 + PKCE。您可以查看我的代码示例博客文章,以推进您的设置并查看外观。请注意,我的应用还会收到刷新令牌。虽然不建议在浏览器中使用一个。

答:

0赞 AlfredoRevilla-MSFT 8/2/2023 #1

理想情况下,应使用 OAuth 2.0 授权代码流。不再建议将隐式流用于 SPA 应用程序。

无法配置刷新令牌的生存期。你不能减少或延长它们的寿命。在条件访问中配置登录频率,以定义用户需要再次登录之前的时间段。有关详细信息,请参阅使用条件访问配置身份验证会话管理。

并非所有刷新令牌都遵循令牌生存期策略中设置的规则。具体而言,单页应用中使用的刷新令牌始终固定为 24 小时的活动,就好像它们应用了 24 小时的 MaxAgeSessionSingleFactor 策略一样。