layout: docs-default
作用域和声明
IdentityServer.Core.Models.Scope 类构建了OpenID Connect 和 OAuth2 作用域.
-
Enabled- 指明启用作用域,作用域可以申请。默认是
true.
- 指明启用作用域,作用域可以申请。默认是
-
Name- 作用域的名字。客户端用这个名字申请作用域。
-
DisplayName- 在
同意页面上的显示名称。
- 在
-
Description- 在
同意页面上的显示的介绍。
- 在
-
Required- 在
同意页面上,用户可以选择或者取消这个作用域。默认是false.
- 在
-
ScopeSecrets( v2.2新增)- 给作用域加上密钥(给内审端点使用) - 请参照 这里.
-
AllowUnrestrictedIntrospection(v2.3新增)- 当时用内审端点时,在访问令牌中允许这个作用域查看其它作用域。
-
Emphasize- 在
同意页面是否强调这个作用域。使用这个设置突出显示敏感或重要的作用域,默认是false.
- 在
-
Type- 作用域或者是
Identity(OpenID Connect 相关) 或者是Resource(OAuth2 资源). 默认为Resource.
- 作用域或者是
-
Claims- 用户声明列表,包含在身份令牌(identity 作用域) 或者访问令牌(资源作用域).
-
IncludeAllClaimsForUser
*启用后,用户的所有声明会包含在令牌中。默认是false. -
ClaimsRule- 判定那个声明会被包含在令牌中的规则。(这是实现规格)
-
ShowInDiscoveryDocument- 指定这个作用域是否出现在发现(discovery)文档中。默认为
true.
- 指定这个作用域是否出现在发现(discovery)文档中。默认为
作用域同样指定那些声明会放到对应的令牌里 - ScopeClaim 类包含下面的属性:
-
Name- 声明的名字
-
Description- 声明的描述
-
AlwaysIncludeInIdToken- 指定声明是否总是放到身份令牌中(即使用户已经取到了访问令牌).只对身份作用域有效。默认是
false.
- 指定声明是否总是放到身份令牌中(即使用户已经取到了访问令牌).只对身份作用域有效。默认是
role 身份作用域的例子:
var roleScope = new Scope
{
Name = "roles",
DisplayName = "Roles",
Description = "Your organizational roles",
Type = ScopeType.Identity,
Claims = new List<ScopeClaim>
{
new ScopeClaim(Constants.ClaimTypes.Role, alwaysInclude: true)
}
};
'AlwaysIncludeInIdentityToken' 指定了某个声明一定会被包含在身份令牌中,即使用户已经从用户信息端点得到了访问令牌。
IdentityManager API作用域的例子:
var idMgrScope = new Scope
{
Name = "idmgr",
DisplayName = "IdentityManager",
Type = ScopeType.Resource,
Emphasize = true,
Claims = new List<ScopeClaim>
{
new ScopeClaim(Constants.ClaimTypes.Name),
new ScopeClaim(Constants.ClaimTypes.Role)
}
};