Identityserver4 刷新令牌标识服务器4
我们使用Identity Server4来保护我们的API。我们希望使用刷新令牌来获得对API的长期访问权限。根据文档(“”),我们已将AllowOfflineAccess设置为true,但仍然不起作用。AccessTokenLifeTime过期(3600秒)后,令牌不工作。以下是客户:Identityserver4 刷新令牌标识服务器4,identityserver4,Identityserver4,我们使用Identity Server4来保护我们的API。我们希望使用刷新令牌来获得对API的长期访问权限。根据文档(“”),我们已将AllowOfflineAccess设置为true,但仍然不起作用。AccessTokenLifeTime过期(3600秒)后,令牌不工作。以下是客户: return new List<Client> { new Client { ClientId = "client",
return new List<Client>
{
new Client
{
ClientId = "client",
// no interactive user, use the clientid/secret for authentication
AllowedGrantTypes = GrantTypes.ClientCredentials,
// secret for authentication
ClientSecrets =
{
new Secret("secret".Sha256())
},
// scopes that client has access to
AllowedScopes = { "api1" },
AccessTokenLifetime=3600,
AllowOfflineAccess=true
}
返回新列表
{
新客户
{
ClientId=“客户端”,
//无交互用户,请使用clientid/secret进行身份验证
AllowedGrantTypes=GrantTypes.ClientCredentials,
//身份验证的秘密
客户秘密=
{
新密码(“Secret.Sha256())
},
//客户端有权访问的作用域
AllowedScopes={“api1”},
AccessTokenLifetime=3600,
AllowOfflineAccess=true
}
客户端应用程序必须请求刷新令牌
请注意,并非每个流都可以使用:
混合、授权代码和
资源所有者密码流。要请求刷新令牌,客户端
需要在令牌请求中包括脱机访问范围(以及
必须获得授权才能申请该范围)
将此行添加到客户端代码:
.AddOpenIdConnect("oidc", "Open Id connect", options =>
{
options.Scope.Add("offline_access");
}
刷新令牌的工作方式:
- 登录以获取访问令牌。使用“offline_access”作用域时,会包含刷新令牌
- 使用访问令牌直到其过期
- 通过向端点发送刷新令牌来获取新的访问令牌
- 根据您的策略,您还可以“刷新”刷新令牌本身(用新令牌替换持久化的刷新令牌)。或者在令牌过期之前不要返回刷新令牌,让用户再次登录
.AddOpenIdConnect("oidc", "Open Id connect", options =>
{
options.Scope.Add("offline_access");
}
刷新令牌的工作方式:
- 登录以获取访问令牌。使用“offline_access”作用域时,会包含刷新令牌
- 使用访问令牌直到其过期
- 通过向端点发送刷新令牌来获取新的访问令牌
- 根据您的策略,您还可以“刷新”刷新令牌本身(用新令牌替换持久化的刷新令牌)。或者在令牌过期之前不要返回刷新令牌,让用户再次登录