Azure ad b2c Azure B2C:“;提供的id“U令牌签名验证失败”;

Azure ad b2c Azure B2C:“;提供的id“U令牌签名验证失败”;,azure-ad-b2c,openid-connect,Azure Ad B2c,Openid Connect,我正在创建一个身份提供商,并将其纳入B2C定制政策 发现发生得很好,用户被发送到我的idp fine。 但是,当我将用户返回到B2C时,使用id\u令牌response type(我目前唯一支持的响应类型),B2C会在标题中给出错误。完全错误是: error_description=AADB2C90239: The provided id_token failed signature validation. Please provide another token and try again.

我正在创建一个身份提供商,并将其纳入B2C定制政策

发现发生得很好,用户被发送到我的idp fine。 但是,当我将用户返回到B2C时,使用
id\u令牌
response type(我目前唯一支持的响应类型),B2C会在标题中给出错误。完全错误是:

error_description=AADB2C90239: The provided id_token failed signature validation. Please provide another token and try again.
我验证我的令牌所依据的其他一切(jwt.io,各种节点jwt/jwk验证方法)似乎都对我返回的内容感到满意,只有B2C不满意

我只是在本地机器上运行它,因此发行者是ngrok,但我的openid配置如下所示:

{
"issuer": "https://28b5fe46.ngrok.io",
"authorization_endpoint": "http://localhost:3000/authentication/auth",
"jwks_uri": "https://28b5fe46.ngrok.io/.well-known/openid-configuration/keys",
"response_modes_supported": [
    "query"
],
"response_types_supported": [
    "id_token"
],
"scopes_supported": [
    "openid"
],
"subject_types_supported": [
    "public"
],
"id_token_signing_alg_values_supported": [
    "RS256"
],
"claims_supported": [
    "sub"
]
}
{
"keys": [
{
"kid": "kiddy123",
"alg": "RS256",
"kty": "RSA",
"use": "sig",
"n": "ALdnY_dWrQgjaqWuqUFpr-__p62xsWSWGiVH9CEWlxOTGrR8jhfG_C_xxGkkptWrVWwJgpmJ7zOMFXjqc9HqGCitl9Czl-X68Ld2xnZ_HdmikRTv-Witn8V-5QiQhSEGwvA2Xek8OVWKWOZ7Z4L9_SjNar33E8zGGFtz77_pmzJ6_zompGQSkLwAMTU3buI8TUKFIOBLGtc_eFCfgcbHFjJuYYp_200A4Xz2a0lNvvHSZ8PLKmwoRIBbFhkhe0zFd0mwq97SavTUXrltZnq3ghTbc6QzJC4T3_4J1LMTEQIFpaK3jK9VPFrLVESy8Ovz4CdxsfY3_bv2QX2HfPOxJziDIOsoztXUvfPPH-tu5nZ2JpKuE5ftAL3W7LbR5SCe2fHqV8aSsJbyDP2fHKbjy1pBhx_MQ2ty17YJRcqHER0l2GEhRf7AhdewIdv2_LdMIUr1tYuYWLuiZVN682fgYZZGl_TAxhBSyi65uzXbziG4STpENkX8KvBPjkMJc-EfwRcegJzS2kJVd-fnE5fCF2lHuo0hC93piViUhtzo6_1R5AXKk2JKxs_kWRd30E7DE8LZPRw-2hM3zrEQ6X5VL7q-UvHLR6SUKdjHXPYUX2FJAuj8EhQlqhovf26_pwO26wHhBl8mkJo9T8c8MQSVz3y12AJbP99-lo0We5umk4uP",
"e": "AQAB"
}
]
}
我的钥匙是这样的:

{
"issuer": "https://28b5fe46.ngrok.io",
"authorization_endpoint": "http://localhost:3000/authentication/auth",
"jwks_uri": "https://28b5fe46.ngrok.io/.well-known/openid-configuration/keys",
"response_modes_supported": [
    "query"
],
"response_types_supported": [
    "id_token"
],
"scopes_supported": [
    "openid"
],
"subject_types_supported": [
    "public"
],
"id_token_signing_alg_values_supported": [
    "RS256"
],
"claims_supported": [
    "sub"
]
}
{
"keys": [
{
"kid": "kiddy123",
"alg": "RS256",
"kty": "RSA",
"use": "sig",
"n": "ALdnY_dWrQgjaqWuqUFpr-__p62xsWSWGiVH9CEWlxOTGrR8jhfG_C_xxGkkptWrVWwJgpmJ7zOMFXjqc9HqGCitl9Czl-X68Ld2xnZ_HdmikRTv-Witn8V-5QiQhSEGwvA2Xek8OVWKWOZ7Z4L9_SjNar33E8zGGFtz77_pmzJ6_zompGQSkLwAMTU3buI8TUKFIOBLGtc_eFCfgcbHFjJuYYp_200A4Xz2a0lNvvHSZ8PLKmwoRIBbFhkhe0zFd0mwq97SavTUXrltZnq3ghTbc6QzJC4T3_4J1LMTEQIFpaK3jK9VPFrLVESy8Ovz4CdxsfY3_bv2QX2HfPOxJziDIOsoztXUvfPPH-tu5nZ2JpKuE5ftAL3W7LbR5SCe2fHqV8aSsJbyDP2fHKbjy1pBhx_MQ2ty17YJRcqHER0l2GEhRf7AhdewIdv2_LdMIUr1tYuYWLuiZVN682fgYZZGl_TAxhBSyi65uzXbziG4STpENkX8KvBPjkMJc-EfwRcegJzS2kJVd-fnE5fCF2lHuo0hC93piViUhtzo6_1R5AXKk2JKxs_kWRd30E7DE8LZPRw-2hM3zrEQ6X5VL7q-UvHLR6SUKdjHXPYUX2FJAuj8EhQlqhovf26_pwO26wHhBl8mkJo9T8c8MQSVz3y12AJbP99-lo0We5umk4uP",
"e": "AQAB"
}
]
}
B2C旅程记录器没有给我任何额外的信息,只有前面提到的错误

有人知道我如何进一步调试这个吗

下面是我如何创建id_令牌的。您可以在底部附近看到,我正在根据用于创建jwks的pem验证令牌

const{session}=common.getServices(请求)
const sessionValues=session.get(请求)
const pem=fs.readFileSync(path.join(uu dirname,“…”、“…”、“…”、“…”、“…”、“…”、“…”、“…”、“…”、“…”、“jwtRS256.key”))
常数{
暂时,
乌里,
国家,,
databucketItems:{sub},
客户
}=会话值
const jwk=njwk.jwk.fromJSON(JSON.stringify({
“kid”:“kiddy123”,
'alg':'RS256',
“kty”:“RSA”,
'use':'sig',
“n”是这样的“n”是这样的“n”是这样的“n”是这样的“n”是这样的“n”是这样的“n”是“n”是这样的“n”是这样的“n”是这样的“n”是这样的“n”是这样的“n”是这样的一个学校的一个学校的一个学校的一个学校的一个学校的一个学校的一个学校,一个学校的学校的一个学校的一个学校的学校是一个学校,一个学校的学校的学校是一个学校的学校的学校的学校,一个学校是一个学校的一个学校的学校的学校,一个学校的学校的一个学校的学校是一个学校,一个学校的学校的学校,一个学校的学校的学校是一个学校的一个学校的学校,一个学校的一个学校的学校的学校的学校的学校是一个学校,一个学校的学校,一个学校的学校的学校的学校是一个学校的学校JK9VPFRLVESY8OVZ4CDXSFY32.在中国的一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究领域,一个研究,一个研究,一个研究领域,一个研究,一个研究领域,一个研究,一个研究,一个研究,一个研究领域,一个研究领域,一个研究,一个2 2,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,2 8MQSVZ3Y12AJBP99-lo0We5umk4uP',
“e”:“AQAB”
}))
const time=new Date().getTime()
常量jwt=njwt.create({
iss:'https://28b5fe46.ngrok.io',
名字:“奶酪人”,
澳大利亚:clientId,
暂时,
乌里,
国家,,
附属的
},pem,jwk.alg)
jwt.setHeader('kid','kiddy123'))
jwt.setExpiration(时间+(12*60*60*1000))
jwt.setNotBefore(时间-(2*60*60*1000))
压缩常数=jwt.compact()
const returnUrl=`${sessionValues.redirectUri}?${qs.stringify({
id_标记:压缩,
状态
})}`
/**仅用于验证id_令牌**/
const-verifier=njwt.createVerifier().withKeyResolver((kid,next)=>{
return pem.toString()
})
const parsedJwt=验证器。验证(压缩)
log(parsedJwt)//这将正确打印令牌-意味着它是有效的

return h.redirect(returnUrl)
您能展示您获得令牌的过程吗?您的意思是我如何创建令牌?B2C是检索令牌的服务器。我将添加创建令牌的方式。在调整一些设置后,我遇到了相同的错误,并且在恢复所有更改后无法摆脱它。你找到解决方案了吗@Chrift?@Chrift如果我们遇到同样的问题,我希望有一个解决方案发布,你做了什么来解决这个问题?@softbear你能找到解决方案吗?