更新到IdentityServer4 3.1.3后,AccessToken确实错过了关键受众

更新到IdentityServer4 3.1.3后,AccessToken确实错过了关键受众,identityserver4,access-token,audience,Identityserver4,Access Token,Audience,我们已经使用IdentityServer4实现了一个身份提供者。最近,我们将应用程序升级到.net core 3.1(从2.1版),并使用它将IdentityServer 4 Nuget软件包从2.2.0版升级到3.1.3版 这些是旧状态(使用.net 2.1和IdentityServer 4 2.2.0)提供的访问令牌的实际内容 这些是新状态(使用.net 3.1和IdentityServer 4 3.1.3)提供的访问令牌的内容: 如您所见,旧版本包含一个名为https://lab10vm-

我们已经使用IdentityServer4实现了一个身份提供者。最近,我们将应用程序升级到.net core 3.1(从2.1版),并使用它将IdentityServer 4 Nuget软件包从2.2.0版升级到3.1.3版

这些是旧状态(使用.net 2.1和IdentityServer 4 2.2.0)提供的访问令牌的实际内容

这些是新状态(使用.net 3.1和IdentityServer 4 3.1.3)提供的访问令牌的内容:

如您所见,旧版本包含一个名为https://lab10vm-tri-2:8777/usermgmt/identityprovider/resources,而较新的版本则没有

请告诉我:我怎样才能恢复以前的行为,让观众产生共鸣

我尝试过的:谷歌,非常非常关注“IdentityServer 3.1缺少观众”之类的话题。
我发现的所有结果都与我的情况不符,我不知道该去哪里查找。

尝试升级到IdentityServer 4的4.0x版本,请在最新版本中重新考虑。因为我在版本3.13中没有看到它,但我看到它出现在v4.0.0中

您需要设置
选项。EmitLegacyResourceAudienceClaim=true设置IdentityServer4时,默认值为false。
它发出一个
aud
声明,格式为
issuer/resources

下面是您的代码的外观:

namespace IdentityServer
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            var builder = services.AddIdentityServer(                
                options =>
                {
                    options.EmitLegacyResourceAudienceClaim = true; //Default value is false
                })
                .AddInMemoryIdentityResources(Config.Ids)
                .AddInMemoryApiResources(Config.Apis)
                .AddInMemoryClients(Config.Clients)
                .AddTestUsers(TestUsers.Users);
        }
    }
}
阅读有关EmitLegacyResourceAudienceClaim的更多信息

{
  "nbf": 1597236389,
  "exp": 1597239989,
  "iss": "https://lab10vm-tri-3:8777/usermgmt/identityprovider",
  "aud": "basecommon",
  "client_id": "Webportal",
  "sub": "d860efca-22d9-47fd-8249-791ba61b07c7",
  "auth_time": 1597236383,
  "idp": "local",
  "upn": "Administrator",
  "scope": [
    "openid",
    "profile",
    "basecommon"
  ],
  "amr": [
    "pwd"
  ]
}
namespace IdentityServer
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            var builder = services.AddIdentityServer(                
                options =>
                {
                    options.EmitLegacyResourceAudienceClaim = true; //Default value is false
                })
                .AddInMemoryIdentityResources(Config.Ids)
                .AddInMemoryApiResources(Config.Apis)
                .AddInMemoryClients(Config.Clients)
                .AddTestUsers(TestUsers.Users);
        }
    }
}