C# Identity Server 4 AddInMemoryIdentityResources

C# Identity Server 4 AddInMemoryIdentityResources,c#,identityserver4,C#,Identityserver4,我想知道是否有人可以向我解释在启动期间注册identity server时使用了哪些AddInMemoryIdentity资源。从他们展示的示例来看,注释之间的代码如下所示: services.AddIdentityServer() .AddDeveloperSigningCredential() .AddInMemoryPersistedGrants() //******************** .AddInMemoryIdentityResources(Config.GetIdentit

我想知道是否有人可以向我解释在启动期间注册identity server时使用了哪些AddInMemoryIdentity资源。从他们展示的示例来看,注释之间的代码如下所示:

services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryPersistedGrants()
//********************
.AddInMemoryIdentityResources(Config.GetIdentityResources())
//********************
.AddInMemoryApiResources(configurationManager.GetApiResources())
.AddInMemoryClients(configurationManager.GetClients())
.AddAspNetIdentity<User>();
然后,配置文件如下所示:

public static IEnumerable<IdentityResource> GetIdentityResources()
{
    return new List<IdentityResource>
    {
        new IdentityResources.OpenId(),
        new IdentityResources.Profile(),
    };
}

现在,我认为当你声明一个客户端时,你定义了作用域,基本上说,你可以传递用户名,id,等等。。。但是,那么这句话的重点是什么呢?AddInMemoryIdentityResourceConfig.GetIdentityResources似乎做了同样的事情,但它是全局的,因为它与任何客户端都没有关联?

AddInMemoryIdentityResources基本上是定义可用标识作用域的全局列表。即客户可以参考的主列表

AddInMemoryIdentityResources基本上是定义可用标识作用域的全局列表。即客户可以参考的主列表

那么,这是否意味着如果我在客户机上定义作用域,就不需要它?或者我总是需要定义这个值?客户端通过其作用域名称引用这些值-所以是的。对不起,您的回答让我有点困惑。你是说AddInMemoryIndentityResources是一个可用作用域的白名单,然后每个客户端构建自己的作用域列表以供使用,但该列表必须根据全局列表进行批准吗?@Bojan正是这样,是的。API资源和作用域也有一个单独的列表。这是否意味着如果我在客户端定义作用域,就不需要它?或者我总是需要定义这个值?客户端通过其作用域名称引用这些值-所以是的。对不起,您的回答让我有点困惑。你是说AddInMemoryIndentityResources是一个可用作用域的白名单,然后每个客户端构建自己的作用域列表以供使用,但该列表必须根据全局列表进行批准吗?@Bojan正是这样,是的。API资源和范围也有一个单独的列表。在生产可行性方面有类似的混淆:如果配置很少更改,这种类型的配置可能也适用于生产场景@在生产可行性方面有类似的混淆:这种类型的配置可能也适用于配置很少更改时的生产场景@