Azure AD B2C报IDX20108错误时ida:AadInstance正确配置值
问题原因
这个IDX20108报错是两个配置错误共同导致的:
- 第一,TaskService项目里的
ida:AadInstance配置值缺少地址模板占位符。示例代码里获取元数据时,会自动把租户ID、策略ID作为参数,和ida:AadInstance拼接生成完整的OpenID配置端点地址,你现在只填了域名https://UPES.b2clogin.com,代码拼接逻辑直接失效,最终把字符串类型对象当成地址参数传入,才会出现错误提示里参数值是System.String的情况。 - 第二,两个项目里的
ida:Tenant配置都多了https://前缀,就算地址模板对了,拼出来的端点地址也会格式非法。
修复方法
按下面的要求改两个项目的web.config配置即可:
- 统一两个项目的
ida:AadInstance配置,不管是前端Web还是后端TaskService,这个值都要填带占位符的完整模板,不要只填域名:<add key="ida:AadInstance" value="https://UPES.b2clogin.com/{0}/{1}/v2.0/.well-known/openid-configuration" /> - 修正两个项目的
ida:Tenant配置,去掉前面的https://前缀,直接填租户域名:<add key="ida:Tenant" value="UPES2020.onmicrosoft.com" /> - 改完后清理解决方案、重新编译项目再运行,报错就会消失。
注意:官方示例里说的
ida:AadInstance设为<your-tenant-name>.b2clogin.com是不严谨的简化描述,只适用于新版本封装好的认证中间件,你现在用的这个示例版本的手动拼接元数据逻辑,必须填带占位符的完整地址模板。
内容的提问来源于stack exchange,提问作者Psychonaut007
相关产品推荐
相关产品推荐

