IdentityServer4刷新令牌永不过期

问题描述 投票:0回答:2

我们正在使用IdentityServer4,并且在使用刷新令牌时遇到问题。

这是我的客户端配置:赠款类型:client_credentials混合动力

  • 访问令牌生存期:
    • 60
  • 身份令牌生存期:
    • 900
  • 绝对刷新令牌生存期:
    • 240
  • 滑动刷新令牌生存期:
    • 60
  • 刷新令牌用法:
    • OneTimeOnly
  • 刷新令牌到期:
    • 绝对

我正在检查访问令牌的生存时间,当它即将到期时,我使用刷新令牌来获取新的访问令牌。 240秒后,访问令牌的生存时间不再延长,并且我的客户端转到Identity Server,它将为我的客户端发行一组新的令牌。

我希望我的用户在刷新令牌到期后输入用户名/密码,购买Identity Server发行新令牌而不是询问证书。

任何想法?

identityserver4 refresh-token
2个回答
0
投票

如果我的理解正确,您想强迫用户从您的客户端进行交互式身份验证吗?如果是这样,则可以使用max_age=nprompt=login authorize端点参数来触发该流,然后可以在客户端中验证auth_time声明以确保其足够新。

当前,这是在没有提示的情况下发生的,因为用户仍通过身份验证cookie拥有有效的IDP会话。建议您在设置IDP会话以使其与客户端应用程序会话生存期保持一致的基础上,使用上述方法。


0
投票

需要调整两件事:

  1. “身份令牌生存期”也应为240(如果正确使用了OpenIDConnect)

  2. 您仍在登录IdentityServer,因为它设置了具有更长生存期的会话cookie。此cookie在您的IdentityServer应用(而不是客户端应用)中。它称为“ idsrv.session”。您还需要将该Cookie的生存期调整为240秒:

services.AddIdentityServer(options => {options.Authentication.CookieLifetime = TimeSpan.FromSeconds(240);})]
© www.soinside.com 2019 - 2024. All rights reserved.