B2C自定义策略用客户端证书对接Azure AD报No url encoding for asymmetric keys错误
问题根因
该错误与证书格式无关,你不需要将证书转换为PEM格式,现有证书生成、导出、上传操作均无问题,错误来源于自定义策略的配置项错误:
当使用证书作为客户端凭据时,B2C需要使用证书生成签名的客户端断言完成身份验证,你沿用了客户端密钥场景的Key Id配置为client_secret,导致B2C尝试将非对称证书内容作为普通客户端密钥进行URL编码传输,非对称密钥不支持该操作,因此抛出No url encoding for asymmetric keys错误。
修正步骤
- 修改对应Azure AD身份提供商技术配置文件的
CryptographicKeys节点,将Key Id替换为client_assertion_signing_certificate - 在同一技术配置文件的
Metadata节点下新增配置,开启客户端断言发送 - 校验B2C侧Policy Key的类型为
Certificate,上传PFX时输入的密码正确,StorageReferenceId值与配置中的引用完全一致(区分大小写) - 校验外部Azure AD应用注册中上传的CER证书与B2C侧PFX证书为同一密钥对的公钥,证书处于有效未过期状态
修正后配置示例
<!-- 元数据节点新增配置 --> <Metadata> <!-- 其他原有配置保留 --> <Item Key="SendClientAssertion">true</Item> </Metadata> <!-- 加密密钥节点修改配置 --> <CryptographicKeys> <Key Id="client_assertion_signing_certificate" StorageReferenceId="B2C_1A_MyB2CPolicy" /> </CryptographicKeys>
内容的提问来源于stack exchange,提问作者Marina Gurevich
相关产品推荐
相关产品推荐

