You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure B2C自定义策略对接KeyCloak SSO出现CryptographicKeys验证错误

解决步骤

你的报错来自两个配置错误,按如下修改即可解决:

1. 修正XML节点顺序

Azure B2C自定义策略的XML Schema对TechnicalProfile下的子节点顺序有严格要求,CryptographicKeys节点必须放在InputClaims节点之后、OutputClaims节点之前,你当前的配置把CryptographicKeys放在了OutputClaims之后,不符合架构要求,因此触发校验报错。

2. 修正Policy Key用途配置

你当前把存储客户端密钥的Policy Key用途设为了Signature,该用途仅适用于令牌签名场景,OpenID连接身份提供商的客户端密钥属于身份验证机密,用途必须选择Secret,否则后续运行时会触发鉴权错误。


修正后的完整ClaimsProvider配置

<ClaimsProvider>
  <Domain>mydomain.com</Domain>
  <DisplayName>SSO</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="SSO-KK-OpenID">
      <DisplayName>My SSO</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <Metadata>
        <Item Key="ProviderName">https://mydomainurl.com</Item>
        <Item Key="METADATA">https://mydomainurl.com/auth/realms/myrealm/.well-known/openid-configuration</Item>
        <Item Key="response_types">code</Item>
        <Item Key="response_mode">form_post</Item>
        <Item Key="scope">openid</Item>
        <Item Key="HttpBinding">POST</Item>
        <Item Key="UsePolicyInRedirectUri">false</Item>
        <Item Key="client_id">myclientIdOnKeyCloak</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="pippo" />
      </InputClaims>
      <!-- 已调整CryptographicKeys到InputClaims之后、OutputClaims之前 -->
      <CryptographicKeys>
        <Key Id="client_secret" StorageReferenceId="B2C_1A_MYKKSecret" />
      </CryptographicKeys>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="https://mydomainurl.com" />
        <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
        <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="email" />
        <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
        <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name" />
        <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
        <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
      </OutputClaims>
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

后续操作步骤

  • 进入Azure B2C门户的「Identity Experience Framework」-「Policy keys」页面,删除原有B2C_1A_MYKKSecret密钥
  • 重新创建密钥,「选项」选择Manual,「名称」保持为MYKKSecret(生成的完整ID会自动带B2C_1A_前缀),「用途」选择Secret,填入你KeyCloak侧的客户端秘钥后保存
  • 重新上传修改后的策略文件即可通过校验

内容的提问来源于stack exchange,提问作者Luca Riccitelli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:36:07