gpt4 book ai didi

oauth-2.0 - Azure AD B2C 不返回刷新 token

转载 作者:行者123 更新时间:2023-12-03 13:58:03 24 4
gpt4 key购买 nike

我正在开发一个以 Azure AD B2C 作为身份提供者的 SPA。我正在使用 MSAL JavaScript library它主要工作正常。我可以为我的 Web API 后端创建用户、登录和获取访问 token 。

目前唯一的问题是 B2C 端点没有返回刷新 token ,因此当访问 token 过期时,UserAgentApplication 类中的 AcquireTokenSilent 方法(用于使用刷新 token 刷新过期的访问 token )失败。

我在 B2C 中的应用程序在其属性中配置为“包括 Web 应用程序/Web API”和“允许隐式流”设置为"is"。在 API 访问部分中,“访问用户的个人资料”下的“openid”和“offline_access”范围都打勾。应用程序本身具有“读取”、“写入”和“user_impersonation”范围(不确定这是否重要)。

enter image description here

“offline_access”包含在我的范围中,我尝试创建一个应用程序,例如读/写范围,并且也包括它(如“https://mytenant.onmicrosoft.com/testapp/offline_access”),但似乎没有任何效果。响应永远不会有刷新 token ,无论是 id token 还是访问 token 。

我注意到的是,当我转到我创建的 SignUp-SignIn 策略并尝试从那里运行端点时,“offline_access”范围在下拉列表中甚至不可用。即使我复制底部的“运行端点”链接并在运行之前将范围添加到 URL,响应也不包含刷新 token 。

enter image description here

当我单击顶部的链接时,它似乎为我提供了有关端点的一些详细信息,并且只有“openid”在支持的范围内。

不确定我在这里遗漏了什么,所以任何想法都将不胜感激。

最佳答案

立即运行 链接生成一个使用 implicit flow 的身份验证请求登录。根据定义,由于安全原因,隐式流不允许您获取刷新 token 。因此,下拉菜单不会为您提供 offline_access范围,因为它不起作用。如果需要刷新 token ,则需要通过 confidential code flow 运行.如果您选择这样做,您可以通过手动修改“立即运行”链接生成的 URL 来执行此操作。具体来说,在 URL 中:

  • 设置 response_type=code(不是 token )
  • 将“offline_access”添加到范围列表

  • 获得代码后,发出 POST 请求,如 documentation 所示交换刷新 token 的代码。

    关于oauth-2.0 - Azure AD B2C 不返回刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45663863/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com