0

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

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

{
  "nbf": 1597236398,
  "exp": 1597239998,
  "iss": "https://lab10vm-tri-2:8777/usermgmt/identityprovider",
  "aud": [
    "https://lab10vm-tri-2:8777/usermgmt/identityprovider/resources",
    "basecommon"
  ],
  "client_id": "Webportal",
  "sub": "d860efca-22d9-47fd-8249-791ba61b07c7",
  "auth_time": 1597236392,
  "idp": "local",
  "upn": "Administrator",
  "scope": [
    "openid",
    "profile",
    "basecommon"
  ],
  "amr": [
    "pwd"
  ]
}

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

{
  "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"
  ]
}

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

请告诉我:我怎样才能恢复以前的行为,使观众有依恋?

我尝试过的:Google,非常非常关注“IdentityServer 3.1 受众缺失”等主题。我以这种方式找到的所有结果都不符合我的情况,我不知道该去哪里找了。

4

2 回答 2

1

设置IdentityServer4时需要options.EmitLegacyResourceAudienceClaim = true;设置,默认值为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 这里

于 2020-08-13T16:23:29.307 回答
0

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

于 2020-08-13T15:01:56.440 回答