Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 在OpenIddict中有没有一种方法可以设置不同的票证到期时间?_Security_Asp.net Core_Asp.net Identity_Openiddict - Fatal编程技术网

Security 在OpenIddict中有没有一种方法可以设置不同的票证到期时间?

Security 在OpenIddict中有没有一种方法可以设置不同的票证到期时间?,security,asp.net-core,asp.net-identity,openiddict,Security,Asp.net Core,Asp.net Identity,Openiddict,我有一个应用程序使用OpenIddict进行令牌授权(访问和刷新令牌),总体来说,它工作得很好。问题是,我的用例有多种应用类型(web和移动应用)使用同一授权服务器。我希望不同类型(可能使用不同的令牌端点)具有不同的到期时间,但我无法找到一种方法来覆盖使用SetAccessTokenLifetime和SetRefreshTokenLifetime设置的值。有办法做到这一点吗 目标是使web应用具有更长的访问令牌长度,并使用户在其过期时重定向到登录(相当长的过期时间,例如小时)。在移动端,我想使用

我有一个应用程序使用OpenIddict进行令牌授权(访问和刷新令牌),总体来说,它工作得很好。问题是,我的用例有多种应用类型(web和移动应用)使用同一授权服务器。我希望不同类型(可能使用不同的令牌端点)具有不同的到期时间,但我无法找到一种方法来覆盖使用SetAccessTokenLifetime和SetRefreshTokenLifetime设置的值。有办法做到这一点吗

目标是使web应用具有更长的访问令牌长度,并使用户在其过期时重定向到登录(相当长的过期时间,例如小时)。在移动端,我想使用刷新令牌来保持用户登录。最佳实践似乎表明,在移动设备上,我应该有一个很短的令牌到期时间(例如分钟)和一个很长的刷新令牌到期时间

谢谢, 杰森

我希望不同类型(可能使用不同的令牌端点)具有不同的到期时间,但我无法找到一种方法来覆盖使用SetAccessTokenLifetime和SetRefreshTokenLifetime设置的值。有办法做到这一点吗

您可以使用专用的
ClaimsPrincipal
扩展直接从授权端点操作覆盖全局令牌过期值:

principal.SetAccessTokenLifetime(TimeSpan.FromMinutes(30));
principal.SetAuthorizationCodeLifetime(TimeSpan.FromMinutes(1));
principal.SetIdentityTokenLifetime(TimeSpan.FromMinutes(30));
principal.SetRefreshTokenLifetime(TimeSpan.FromDays(2));