Azure AD B2C登录报错:请求中的客户端ID未在租户中注册
我之前也踩过这个一模一样的坑,给你几个实打实的排查方向,应该能搞定:
核对客户端ID的准确性:
去Azure门户的Azure AD B2C应用注册里,找到你创建的应用,复制完整的应用程序(客户端)ID——别犯我之前的傻,把目录(租户)ID当成客户端ID复制进去了!然后仔细检查你请求URL里的<my_client_id>是不是和复制的完全一致,有没有多打空格、漏字符或者大小写错误(虽然ID不区分大小写,但细节不能放过)。确认租户域名/名称正确:
URL里的<my_domain>必须是你注册应用的那个B2C租户的域名,比如your-tenant-name.onmicrosoft.com,或者你设置的自定义域名。登录Azure门户时,记得用右上角的租户切换器确认你当前操作的就是应用所在的B2C租户,别不小心进了其他租户瞎忙活。检查应用的注册位置:
一定要确保你的应用是注册在Azure AD B2C租户下,而不是普通的Azure AD租户里!新手很容易犯这个错:登录门户后直接去“Azure Active Directory”里注册应用,而不是切换到“Azure AD B2C”服务下操作。你可以去B2C的“应用注册”列表里找你的应用,确认它确实在这里。验证用户流/策略是否关联了该应用:
找到你用的<my_sign_up_sign_in_policy_name>(不管是用户流还是自定义策略),进入它的设置页面,检查“应用程序”部分是否添加了你的这个客户端ID对应的应用。如果策略没关联应用,也会触发这个错误。试试换用推荐的URL格式:
虽然login.microsoftonline.com/te/...的格式还能用,但Azure AD B2C现在推荐用your-tenant-name.b2clogin.com的域名,比如:https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/<my_sign_up_sign_in_policy_name>/oauth2/v2.0/authorize?client_id=<my_client_id>...换成这个格式试试,有时候旧格式的租户解析会出奇怪的问题。
补充:如果以上都排查过还是不行,试试清除浏览器缓存或者用隐身模式访问,有时候缓存的旧租户信息会干扰请求。
内容的提问来源于stack exchange,提问作者aBlaze

