我们正在使用Identity Server4来保护我们的API。我们希望使用刷新令牌来获得对API的长期访问。根据文档(“http://docs.identityserver.io/en/release/index.html”),我们将AllowOfflineAccess设置为true但仍然无效。 AccessTokenLifeTime过期(3600秒)后,令牌无法正常工作。这是客户:
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
}
答案 0 :(得分:1)
客户端应用必须请求刷新令牌。
请注意,refresh tokens不适用于每个流程:
混合,授权代码和支持刷新令牌 资源所有者密码流。要请求刷新令牌,客户端 需要在令牌请求中包含offline_access范围(和 必须被授权要求该范围。)
将此行添加到客户端代码中:
.AddOpenIdConnect("oidc", "Open Id connect", options =>
{
options.Scope.Add("offline_access");
}
刷新令牌的工作方式: