作用域和声明


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.

作用域同样指定那些声明会放到对应的令牌里 - ScopeClaim 类包含下面的属性:

  • Name
    • 声明的名字
  • Description
    • 声明的描述
  • AlwaysIncludeInIdToken
    • 指定声明是否总是放到身份令牌中(即使用户已经取到了访问令牌).只对身份作用域有效。默认是false.

role 身份作用域的例子:

var roleScope = new Scope
{
    Name = "roles",
    DisplayName = "Roles",
    Description = "Your organizational roles",
    Type = ScopeType.Identity,

    Claims = new List
    {
        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
    {
        new ScopeClaim(Constants.ClaimTypes.Name),
        new ScopeClaim(Constants.ClaimTypes.Role)
    }
};

你可能感兴趣的:(作用域和声明)