首页 > 解决方案 > 使用 Azure AD B2C 用户流(或自定义策略)进行 SAFE Stack 身份验证——有人解决了这个问题吗?

问题描述

直截了当但开放式的问题:是否有人成功地将 SAFE Stack 应用程序连接到 Azure AD B2C,以便来宾用户(在 B2C 租户中)可以通过定义的用户流或自定义策略登录?

可以让我结束我的方法循环的具体问题:知道为什么使用 Microsoft.Identity.Web 处理身份验证的应用程序会遇到这个记录不充分的错误,以及如何解决它?--

“ID 为 <<Ugly_GUID>> 的应用程序无法获取 ID 令牌,因为请求中未提供 openid 范围或应用程序未获得授权。”

迄今为止我失败的努力的详细信息: 通过一些修改,我能够按照 Ryan Palmer 的两部分系列为我的 SAFE Stack(v3,.NET 5)应用程序强制执行 Azure AD 身份验证:

这会导致我的真实Azure 登录授予我对应用程序的访问权限。但目标是启用用户流(或自定义策略,无论是否有效),以便在我的 Azure AD B2C 租户中获得授权的用户可以进行身份​​验证和使用该应用程序。使用 appsettings.json 中的以下设置(以及许多尝试的变体),对应用 URL 的调用成功地重定向到登录用户流:

"AzureAD":
{
    "Instance": "https://RoundTableExcaliburDev.b2clogin.com/",
    "Domain": "RoundTableExcaliburDev.onmicrosoft.com",
    "ClientId": "26e6d007-be46-4928-b06e-04acdbfd2913",
    "CallbackPath": "/api/login-callback",
    "SignedOutCallbackPath": "/api/logout-callback",
    "SignUpSignInPolicyId": "B2C_1A_SIGNUP_SIGNIN"
}

“b2clogin” URI(与 Ryan Palmer 的原始版本中的 login.microsoftonline.com 相比)和 SignUpSignInPolicyId 成功调用了所需的用户流,并且我能够登录(和/或注册)保存在我的 Azure 中的虚拟用户广告 B2C 资源。但是当流程重定向到我的应用程序时,我得到上面列出的“openid 范围”错误。

该错误发生在 localhost 和部署到 Azure Web 应用实例的版本上,并且发生在 Firefox、Chrome 和 Edge 中。

其他 Azure AD B2C 详细信息:

标签: azureauthenticationf#azure-active-directorysafe-stack

解决方案


好吧,我为我的问题找到了神奇的修复所有按钮,但我不知道为什么它是必要的。在 Azure AD B2C 中创建应用注册后(我重复了多次该过程),我根据此处和其他地方的说明选中了“授予管理员对 openid 和离线访问权限的同意”框。在注册应用程序的“API 权限”视图下,权限在“Microsoft Graph”下显示为“offline_access”和“openid”。尽管已经授予了这些权限,但当我单击“授予 [应用程序名称] 的管理员同意”并确认(重新)授予时,我的问题就消失了。

鉴于我的晦涩错误消息提到了“openid 范围”的权限,并且鉴于我在之前的失败和随后的成功之间没有做任何其他事情,我毫不怀疑这是解决方案,但我不明白为什么会这样是必要的。


推荐阅读