导致 401 响应的 B2C 自定义策略访问令牌



我正在 Azure B2C 中创建自定义注册登录策略,并且能够在 Angular 前端使用 Msal.js 成功获取访问令牌。当我尝试使用 B2C 授权向我的 .Net Core 后端发送请求(使用我的 jwt 访问令牌(时,我收到 401 响应。我有一个使用标准工作流的注册登录策略,并且使用其访问令牌的请求工作正常。我比较了令牌上的属性,看起来自定义策略令牌中缺少 oid 声明。(所有其他声明似乎都是可选的。以下是令牌的比较:

损坏的自定义策略令牌:

{
aud: "..."
azp: "..."
exp: 1565534473
given_name: "..."
iat: 1565530873
iss: "https://login.microsoftonline.com/.../v2.0/"
name: "Aaron"
nbf: 1565530873
nonce: "001f61ed-61c7-4fac-b613-4a5a4e1c134e"
scp: "read"
sub: "..."
tid: "..."
ver: "1.0"

}

工作访问令牌

{
aud: "..."
azp: "..."
country: "United States"
emails: ["..."]
exp: 1565542145
given_name: "..."
iat: 1565538545
iss: "https://login.microsoftonline.com/.../v2.0/"
name: "..."
nbf: 1565538545
nonce: "ffd00fe6-dd02-4de1-ae06-8d6b6f0c8a81"
oid: "..."
scp: "read"
sub: "..."
tfp: "B2C_1_DefaultSignInSignUp"
ver: "1.0"

}

有必要有那个 oid 声明吗?如果是这样,如何将其添加到我的自定义策略 (TrustFrameworkBase.xml(?还有其他方法可以绕过此 401 响应吗?

发生这种情况可能是因为为内置流颁发的令牌使用的密钥与为自定义策略颁发的令牌的密钥不同。

(内置流的签名密钥由Microsoft管理。自定义策略由您管理。

确保您的后端 API 引用自定义策略的/.well-known/openid-configuration终端节点,而不是内置流的终端节点。

最新更新