如何使用内置策略和自定义策略生成的令牌?

时间:2019-06-20 21:35:20

标签: azure-ad-b2c identity-experience-framework

我有ADB2C内置策略。由此,我对最终用户进行身份验证,并生成JWT令牌,以通过使用OpenId Connect配置的APIM来调用API。由于使用了入门工具包,我现在正在设置自定义策略(IEF),但似乎无法并行正常工作。

使用内置策略,一切正常。但是,当我尝试使用通过IEF生成的令牌时,即使所有声明都相同,我也总是收到错误401“该请求的授权已被拒绝。”

快速浏览生成的令牌后,我发现对令牌进行签名的密钥与内置的生成令牌不同。

当然是错误的出处。实际上,在设置自定义策略时,我们需要创建“策略密钥”以对令牌进行签名和加密。并且默认情况下,它是生成的,因此与内置的有所不同。但是我不知道该如何解决!

请注意,对于内置策略和自定义策略,我确实需要具有相同的签名和加密密钥,因为在APIM中,我只能为OpenId Connect配置使用1个元数据URI,而在API操作验证策略中的部分中只能使用1个配置URL。

还请注意,我没有找到一种方法来检索刷新令牌的当前加密密钥(由内置策略使用)。问题是一样的...

感谢您的帮助!

这是一个有效的令牌头,其中包括签名密钥:

{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}

当前,通过我的策略密钥生成的孩子是“ 6jQvK3Cr-pdfMP9ozewO3dnmizxxx_toYfjEnxVpJFs”

当我尝试通过查看元数据URI https://mydomain/tenantId/discovery/v2.0/keys?p=a_ief_policy_name上传与我可以找到的相同的密钥时,它已正确上传

{
  keys: [
  {
    kid: "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk",
    nbf: 1493763266,
    use: "sig",
    kty: "RSA",
    e: "AQAB",
    n: "tVKUtcx_n9rt[...]VTVSR0hiXudFlfQ2rOhPlpObmku68lXw-7V-P7jwrQRFfQVXw"
  }
  ]
}

但是当获得登录请求的响应时,我得到了错误: AADB2C90085:服务遇到内部错误。请重新认证,然后重试。

0 个答案:

没有答案