azure-ad-b2c - 中国 Azure B2C - 本地帐户登录自定义策略疑难解答
问题描述
我正在尝试为中国地区的 Azure B2C 的注册/登录设置一个非常基本的自定义策略,我的问题是关于如何调试登录过程。
仔细按照 [1] 中的说明(并调整中国的 URL/租户 ID,下面有更多详细信息)后,我无法使用自定义策略 signup_signin 流程成功登录。尽管相同的凭据适用于开箱即用的用户流,但每次尝试都会导致“无效的用户名或密码”。但是,通过此自定义策略进行的用户注册确实可以正常工作。
我专门为中国改变的事情:
- 租户 ID(在所有文件中):
<yourtenant>.onmicrosoft.com
-><yourtenant>.partner.onmschina.cn
- 技术配置文件“login-NonInteractive”元数据属性 (TrustFrameworkBase.xml):
- 提供者名称:
https://sts.chinacloudapi.cn/
- 元数据:
https://login.chinacloudapi.cn/<numeric tenant id>/.well-known/openid-configuration
- 授权端点:
https://login.chinacloudapi.cn/<numeric tenant id>/oauth2/token
- 提供者名称:
- b2clogin 值(在适当的应用程序属性等中):尝试了
<yourtenant>.b2clogin.cn/<numeric tenant id>
和<yourtenant>.b2clogin.cn/<yourtenant>.partner.onmschina.cn
形式
我尝试过/仔细检查过的事情:
- 在非中国 Azure 帐户中分别遵循所有指示 -这按预期工作
- 循环通过 login.partner.microsoftonline.cn / login.chinacloudapi.cn / .b2clogin.cn / etc 的许多组合,用于各种身份验证端点
- 重新创建 IdentityExperienceFramework 和 ProxyIdentityExperienceFramework 应用程序
- 根据需要,应用程序分别属于 web 应用程序/本机类型
- 应用程序是在 AAD(不是 B2C)刀片的旧应用程序注册部分中创建的,但在 B2C 租户中(在 b2c-extensions-don't-modify-this-app 应用程序旁边)
- 作为全局管理员进行的所有门户操作
- 代理应用程序有权访问其他应用程序
- 权限已通过选择后的单独按钮单击“授予”
- 应用程序 ID 位于 TrustFrameworkExtensions 文件中的正确客户端/资源位置
- 应用 ID 实际上是应用 ID 而不是对象 ID
- 自定义策略文件以正确的 base/extensions/relyingParty 顺序上传
- App Insights 调试日志记录已打开 - 据我所知,Event:SELFASSERTED 步骤 Web.TPEngine.StateMachineHandlers.SelfAssertedMessageValidationHandler 返回 false,尽管处理程序结果的 statebag 属性包含似乎包含 ID 令牌的验证响应
我直接从 [2] 中观察到 LocalAccounts 文件的这种行为,只填充了模板值(即没有更改用户流的结构或任何东西,只是插入应用程序 ID、租户 ID 和中国 URL 替换)。这个问题 [3] 描述了我遇到的同样的问题,尽管那里列出的解决方案并没有解决我的问题。
达到这一步的学习曲线非常陡峭,我不确定下一步应该如何进一步调试。
有没有人在中国有任何使用 AADB2C 的经验或一般调试此类问题?
[1] https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-get-started-custom
[2] https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack
解决方案
您的中国租户不在中国,而是在北美。内置流使用公共云端点,而不是各自的租户区域。你会发现这很困难,因为中国本地 B2C 租户没有公开发布。
推荐阅读
- stripe-payments - Stripe API - 获取产品的所有 Sku
- postgresql - Postgres邮政编码 - 相同英里半径的列表未显示
- asp.net-mvc - React.js 路由路径值不正确
- c++ - 在 Ubuntu 上的 Eclipse IDE 上的 Yocto 插件上未定义对“pthread_create”的引用
- c - 优化简单模板操作,将变量保存到寄存器中
- system-verilog - 如何在系统verilog中为模拟时间赋值
- html - CSS:li 不会在 ul 中居中
- c# - “System.ObjectDisposedException:无法访问计算机视觉 xamarin 应用程序的封闭流
- python-3.6 - Python如何打印值而不是提示
- artificial-intelligence - 如何检测 PDF 中的可视块?