gpt4 book ai didi

identityserver4 - 访问 token 中缺少 "aud"声明

转载 作者:行者123 更新时间:2023-12-03 18:43:30 26 4
gpt4 key购买 nike

由于未知原因,访问 token 中不存在“aud”声明(尽管它存在于 id token 中)。
将访问 token 发送到 API 后,我收到以下错误:

Bearer was not authenticated. Failure message: IDX10214: Audiencevalidation failed. Audiences: 'empty'. Did not match:validationParameters.ValidAudience: 'productconfigurationapi' orvalidationParameters.ValidAudiences: 'null'.


我知道我可以关闭观众验证,然后一切正常,但我不明白为什么“aud”不是访问 token 的一部分。
这是我的 IS4 配置:
客户端:
            new Client
{
ClientId = "Spa",
AllowedGrantTypes = GrantTypes.Implicit,
AllowAccessTokensViaBrowser = true,
AlwaysSendClientClaims = true,
AlwaysIncludeUserClaimsInIdToken = true,
AccessTokenType = AccessTokenType.Jwt,
AllowedScopes =
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
"productconfigurationapi"
},
RequireConsent = false
}
api资源:
            new ApiResource("productconfigurationapi")
{
UserClaims =
{
JwtClaimTypes.Audience
}
}
API 范围:
    return new List<ApiScope>
{
new ApiScope("productconfigurationapi")
};
以下是 IS4 在其主机应用程序中的配置方式:
        services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddConfigurationStore(options =>
{
})
.AddOperationalStore(options =>
{
})
.AddAspNetIdentity<IdentityUser>()
.AddJwtBearerClientAuthentication();

最佳答案

您应该通过设置 Scopes 属性将 ApiScope 绑定(bind)到 ApiResource:

var api = new ApiResource("productconfigurationapi")
{
UserClaims =
{
JwtClaimTypes.Audience
},
Scopes = new List<string>
{
"productconfigurationapi"
},
};

关于identityserver4 - 访问 token 中缺少 "aud"声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62930426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com