在IdentityServer4中的隐式流中设置访问令牌到期的正确方法是什么?

时间:2018-03-07 16:58:11

标签: identityserver4

我试图将我的隐式客户端的AccessTokenLifetime属性设置为90秒。客户端是一个javascript应用程序。

然而,在令牌过期后,客户端仍然可以在约5分钟内访问api范围“api1”。

这是IdentityServer4中客户端配置的代码:

// JavaScript Client
            new Client
            {
                ClientId = "js",
                ClientName = "JavaScript Client",
                AllowedGrantTypes = GrantTypes.Implicit,
                AllowAccessTokensViaBrowser = true,

                RedirectUris = { "http://localhost:5003/callback.html" },
                PostLogoutRedirectUris = { "http://localhost:5003/index.html" },
                AllowedCorsOrigins = { "http://localhost:5003" },

                AllowedScopes =
                {
                    IdentityServerConstants.StandardScopes.OpenId,
                    IdentityServerConstants.StandardScopes.Profile,
                    "api1"
                },
                AccessTokenLifetime = 90
            }

我正在使用IdentityServer github repo中的Javascript快速入门解决方案https://github.com/IdentityServer/IdentityServer4.Samples/tree/release/Quickstarts/7_JavaScriptClient

1 个答案:

答案 0 :(得分:7)

Microsoft JWT验证中间件存在时钟偏差。它默认设置为5分钟,不能少于。否则 - 访问令牌的建议生命周期为as short as possible。特别是在客户端客户端,您将其暴露给浏览器。所以你最好的解决方案 - 保留默认值(300秒/ 5分钟)。

检查this topic - 围绕此问题进行了很好的讨论。