我们正在使用IdentityServer4,并且在使用刷新令牌时遇到问题。
这是我的客户端配置:赠款类型:client_credentials混合动力
我正在检查访问令牌的生存时间,当它即将到期时,我使用刷新令牌来获取新的访问令牌。 240秒后,访问令牌的生存时间不再延长,并且我的客户端转到Identity Server,它将为我的客户端发行一组新的令牌。
我希望我的用户在刷新令牌到期后输入用户名/密码,购买Identity Server发行新令牌而不是询问证书。
任何想法?
如果我的理解正确,您想强迫用户从您的客户端进行交互式身份验证吗?如果是这样,则可以使用max_age=n
或prompt=login
authorize
端点参数来触发该流,然后可以在客户端中验证auth_time
声明以确保其足够新。
当前,这是在没有提示的情况下发生的,因为用户仍通过身份验证cookie拥有有效的IDP会话。建议您在设置IDP会话以使其与客户端应用程序会话生存期保持一致的基础上,使用上述方法。
需要调整两件事:
“身份令牌生存期”也应为240(如果正确使用了OpenIDConnect)
您仍在登录IdentityServer,因为它设置了具有更长生存期的会话cookie。此cookie在您的IdentityServer应用(而不是客户端应用)中。它称为“ idsrv.session”。您还需要将该Cookie的生存期调整为240秒:
services.AddIdentityServer(options => {options.Authentication.CookieLifetime = TimeSpan.FromSeconds(240);})]