我用IdentityServer4创建了一个令牌我复制了这个例子我只是修改了这个
在身份服务器中-
public static IEnumerable<Client> GetClients()
{
return new List<Client>
{
new Client
{
ClientId = "client",
AllowedGrantTypes = GrantTypes.ClientCredentials,
ClientSecrets =
{
new Secret("secret".Sha256())
},
AllowedScopes = { "tbtsmth" },
AccessTokenLifetime = 10,
IdentityTokenLifetime = 10
}
};
}
我的令牌应该在10秒后到期,并且每10秒我有一个刷新令牌,但我不知道如何测试它。我做类似的事情:
var tokenHandler = new JwtSecurityTokenHandler();
var jwtSecurityToken = tokenHandler.ReadJwtToken(tokenResponse.AccessToken);
Thread.Sleep(10000);
if (jwtSecurityToken.ValidTo < DateTime.UtcNow)
Console.WriteLine("expired");
else
Console.WriteLine("not expired");
它退回已过期的商品,我认为它应该退回我未过期的商品,因为它会被刷新。
客户端凭据流中没有刷新令牌。从文档中:
以下流支持刷新令牌:授权码、混合和资源所有者密码凭据流。
不涉及任何用户,因此不需要刷新令牌。您只需请求一个新令牌。
那么什么时候可以使用刷新令牌呢?当在用户流中需要访问令牌时,例如,当您有一个不使用cookie或需要访问api的客户端时。
Jwt访问令牌的问题是令牌过期。一旦过期,需要用户交互来请求新的访问令牌。因为这不是一个好的用户体验,所以客户端可以使用刷新令牌来请求新的访问令牌。
刷新令牌与jwt访问令牌不同。刷新令牌不必是Jwt令牌,它保留在服务器端,并且比访问令牌的生命周期(过期)长得多,并且可以撤销。撤消刷新令牌意味着不能再使用刷新令牌。
将刷新令牌视为允许客户端请求新访问令牌的某种密钥。
刷新令牌永远不会自动进行,因此您必须在客户端中构建逻辑来刷新令牌。以下是有关如何为允许的流刷新令牌的示例。
从我这里的回答来看,流程可能是这样的:
我在自己的Web API上使用Oauth2,在Web应用程序上使用ASP.NET C#来使用该API。在我的web应用程序上,我正在进行HttpWebRequests。当我的访问令牌过期时,我调用一个方法“refreshToken”,该方法发出请求以获取新的访问令牌。这工作很好,没有问题...除了我得到的响应包含一个新的刷新令牌???我在等新的访问令牌。我甚至认为在没有再次传递凭据的情况下这是不可
我正在使用Cognito用户池对系统中的用户进行身份验证。成功的身份验证将提供一个ID令牌(JWT)、一个访问令牌(JWT)和一个刷新令牌。这里的文档清楚地提到了刷新令牌可以用于刷新访问令牌,但没有提到如何使用。我的问题是,一旦我的访问令牌过期,我如何使用存储的刷新令牌再次刷新我的访问令牌? 我搜索了JavaScript SDK,但找不到任何方法来做同样的事情。我肯定错过了什么。 我还想通过Lam
我使用IdentityServer4验证angular 4客户端以保护WebApi。但我在授权的情况下进入了401。我需要一种调试访问令牌验证过程的方法来帮助我解决问题。
问题内容: 我们的React Native Redux应用程序使用JWT令牌进行身份验证。有许多操作需要此类令牌,并且例如在应用加载时会同时分派许多令牌。 例如 双方并要求JWT。我们将令牌保存在和中。我的问题是如何处理令牌到期。 最初,我将使用中间件来处理令牌到期 } 我遇到的问题是,对于令牌和操作,都会刷新令牌,因为在分发令牌和令牌时,令牌将过期。理想情况下,我想“暂停”需要身份验证的操作
我遇到的问题是,和操作都将刷新令牌,因为在分派时,令牌将过期。理想情况下,我希望“暂停”需要身份验证的操作,直到令牌刷新。有没有一种方法可以用中间件做到这一点?
我遵循了文档页面中的快速启动,使用IdentityServer进行身份验证,对三个服务(IdentityServer、一个Api服务、一个ASPNET MVC应用程序)进行了有效配置。 一切工作都很完美(登录、登录、授权等),直到access_token过期1小时后。此时,MVC应用程序开始从应用编程接口服务接收(正确地)401(因为令牌过期了)。那时,我知道我应该使用refresh_token来