刷新令牌Identity Server4

时间:2018-01-29 08:55:55

标签: identityserver4

我们正在使用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
    }

1 个答案:

答案 0 :(得分:1)

客户端应用必须请求刷新令牌。

请注意,refresh tokens不适用于每个流程:

  

混合,授权代码和支持刷新令牌   资源所有者密码流。要请求刷新令牌,客户端   需要在令牌请求中包含offline_access范围(和   必须被授权要求该范围。)

将此行添加到客户端代码中:

.AddOpenIdConnect("oidc", "Open Id connect", options =>
{
    options.Scope.Add("offline_access");
}

刷新令牌的工作方式:

  • 登录以获取访问令牌。当您使用&#39; offline_access&#39;时,会包含刷新令牌。范围。
  • 使用访问令牌直到它过期。
  • 通过将刷新令牌发送到端点
  • 获取新的访问令牌
  • 根据您的策略,您还可以刷新&#39; 刷新令牌本身(用新令牌替换持久化刷新令牌)。或者,不要返回刷新令牌,直到令牌过期,让用户再次登录。