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
.
- 指定客户端接受的处理流程(flow) (
-
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
).
- 指定访问令牌是一个参考令牌还是自包含的JWT(JSON Web Token) 令牌(默认是
-
EnableLocalLogin
- 指定客户端可以使用本地账号,还是只能使用第三方的IdPs. 默认是
true
.
- 指定客户端可以使用本地账号,还是只能使用第三方的IdPs. 默认是
-
IdentityProviderRestrictions
- 制定哪一个外部 IdPs可以在这个客户端中使用(空表示所有IdPs都允许). 默认为空.
-
IncludeJwtId
- 指定JWT访问令牌是否内嵌唯一标识(通过
jti
声明).
- 指定JWT访问令牌是否内嵌唯一标识(通过
-
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
}