客户端

作者: 灭蒙鸟 | 来源:发表于2016-10-08 12:55 被阅读1684次

    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<string>
        {
            "https://myapp/callback.html",
        },
    
        PostLogoutRedirectUris = new List<string>
        {
            "http://localhost:23453/index.html",
        }
    }
    

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

    var client = new Client
    {
        ClientName = "Legacy Client",
        Enabled = true,
    
        ClientId = "legacy",
        ClientSecrets = new List<Secret>
        {
            new Secret("4C701024-0770-4794-B93D-52B5EB6487A0".Sha256())
        },
    
        Flow = Flows.ResourceOwner,
    
        AbsoluteRefreshTokenLifetime = 86400,
        SlidingRefreshTokenLifetime = 43200,
        RefreshTokenUsage = TokenUsage.OneTimeOnly,
        RefreshTokenExpiration = TokenExpiration.Sliding
    }
    

    相关文章

      网友评论

          本文标题:客户端

          本文链接:https://www.haomeiwen.com/subject/smsuyttx.html