客户端


layout: docs-default

Clients

Client类是OpenID Connect或者OAuth2客户端的一个抽象--比如:原生应用,网站应用,基于JS的前端应用(链接).

  • Enabled

    • 标明这个客户端是否启用,默认为true.
  • ClientId

    • 唯一的客户编号
  • ClientSecrets

    • 客户端密钥列表---只有在需要密钥的处理流(flow)中使用。
  • ClientName

    • 客户端显示名(用于授权页面和日志服务)
  • ClientUri

    • 关于客户端的详细信息网页 (在授权页面上使用)
  • LogoUri

    • 客户端的Logo(在授权页面上使用)
  • RequireConsent

    • 指定是否需要用户明确授权,默认为 true.
  • AllowRememberConsent

    • 指定是否可以记录用户授权决定。默认为true.
  • Flow

    • 指定客户端接受的处理流程(flow) (AuthorizationCode, Implicit, Hybrid, ResourceOwner, ClientCredentials 或者 Custom). 默认为Implicit.
  • AllowClientCredentialsOnly

    • 获取或者设置 是否只允许客户端使用客户端凭据请求令牌。如果希望客户端可以使用用户为中心的处理流程(flow)和附加的客户端凭据处理流程(flow).默认为false. 应该只用于可信的客户端(如:非隐式流程).
  • RedirectUris

    • 指定可以接受令牌和授权码的重定向URIs。
  • PostLogoutRedirectUris

    • 指定登出时可以重定向的URIs
  • LogoutUri (added in v2.2)

    • 指定客户端基于HTTP的登出URI
  • LogoutSessionRequired (added in v2.2)

    • 指定是否把用户的会话号附加到登出Uri上面。默认为true。
  • RequireSignOutPrompt (added in v2.4)

    • 指定登出时是否显示确认页面让用户确认登出。默认为false。
  • AllowedScopes

    • 默认客户端不可以访问任何作用域--需要指明客户端可以访问的作用域(推荐)。或者也可以设置AllowAccessToAllScopes为true,让允许访问全部作用域.
  • AllowAccessTokensViaBrowser ( v2.5新增)

    • 指定客户端是否可以通过浏览器请求访问令牌。
      这个可以强化多返回类型的处理流程(比如: 禁止混合处理流程客户端(应该只使用code id_token)使用token响应类型防止令牌泄露到浏览器。限制它只能使用code id_token)
  • AllowedCustomGrantTypes

    • 当使用Custom处理流程,需要同时指定这个客户端可以使用哪一种自定义授权类型。在这里显式指定授权类型(推荐)或者设置 AllowAccessToAllCustomGrantTypes 为true.
  • IdentityTokenLifetime

    • 身份令牌的生存期,单位是秒。(默认300秒/5分钟)
  • AccessTokenLifetime

    • 访问令牌的生存期,单位是秒。(默认3600秒/1小时)
  • AuthorizationCodeLifetime

    • 授权码的生存期,单位是秒。(默认300秒/5分钟)
  • AbsoluteRefreshTokenLifetime

    • 更新令牌的最大生存期,单位是秒。(默认2592000秒/30天)
  • SlidingRefreshTokenLifetime

    • 更新令牌的延展生存期,默认是1296000秒 / 15 天
  • RefreshTokenUsage

    • ReUse: 使用更新令牌刷新令牌的时候,原更新令牌保持不变。
    • OneTime: 更新令牌每次使用后都会改变。
  • RefreshTokenExpiration

    • Absolute: 更新令牌会在固定时间过期(在AbsoluteRefreshTokenLifetime属性中指定)
    • Sliding: 当刷新令牌的时候,更新令牌的生存期会延展(延展长度在SlidingRefreshTokenLifetime指定).延展后生存期不能超过 AbsoluteRefreshTokenLifetime.
  • UpdateAccessTokenClaimsOnRefresh

    • 获取或设置访问令牌(及所带声明)是否会在使用刷新令牌时更新。
  • AccessTokenType

    • 指定访问令牌是一个参考令牌还是自包含的JWT(JSON Web Token) 令牌(默认是Jwt).
  • EnableLocalLogin

    • 指定客户端可以使用本地账号,还是只能使用第三方的IdPs. 默认是true.
  • IdentityProviderRestrictions

    • 制定哪一个外部 IdPs可以在这个客户端中使用(空表示所有IdPs都允许). 默认为空.
  • IncludeJwtId

    • 指定JWT访问令牌是否内嵌唯一标识(通过jti 声明).
  • AllowedCorsOrigins

    • 如果指定,将使用默认的CORS策略服务(内存服务和EF)来为javascript客户端生成跨域策略。
  • Claims

    • 为这个客户端设置声明 (将包含在访问令牌里).
  • AlwaysSendClientClaims

    • 如果设置,每次处理流程都会发送声明。如果没有设置,那么只有客户端凭据处理流程发送声明。(默认是 false)
  • PrefixClientClaims

    • 如果设置,所有客户端声明会加上client_来确保不和用户声明冲突,默认是true.

还有一些关于更新令牌的设置,请看这里

例子:为隐式处理流程配置客户端

var client = new Client
{
    ClientName = "JS Client",
    Enabled = true,

    ClientId = "implicitclient",
    Flow = Flows.Implicit,

    RequireConsent = true,
    AllowRememberConsent = true,

    RedirectUris = new List
    {
        "https://myapp/callback.html",
    },

    PostLogoutRedirectUris = new List
    {
        "http://localhost:23453/index.html",
    }
}

例子:为客户端配置资源所有者的处理流程

var client = new Client
{
    ClientName = "Legacy Client",
    Enabled = true,

    ClientId = "legacy",
    ClientSecrets = new List
    {
        new Secret("4C701024-0770-4794-B93D-52B5EB6487A0".Sha256())
    },

    Flow = Flows.ResourceOwner,

    AbsoluteRefreshTokenLifetime = 86400,
    SlidingRefreshTokenLifetime = 43200,
    RefreshTokenUsage = TokenUsage.OneTimeOnly,
    RefreshTokenExpiration = TokenExpiration.Sliding
}

你可能感兴趣的:(客户端)