Visual studio VSTS API刷新令牌过期

Visual studio VSTS API刷新令牌过期,visual-studio,azure-devops,azure-devops-rest-api,Visual Studio,Azure Devops,Azure Devops Rest Api,我正在使用VSTSRESTAPI。按照说明,我使用刷新令牌刷新访问令牌。今天早上,刷新令牌停止工作。它们过期了吗?如果访问令牌和刷新令牌都已过期,如何继续?我在这上面找不到任何东西 供参考:是,刷新令牌将过期,您需要发送重新授权请求以再次获取访问令牌和刷新令牌(您之前的授权步骤) 获取新的访问令牌后,先前的访问令牌和刷新令牌已过期。是的,刷新令牌将过期,您需要发送请求重新授权以获取访问令牌和刷新令牌(您先前的授权步骤) 获取新的访问令牌后,以前的访问令牌和刷新令牌已过期。我管理实现此流的团队。@

我正在使用VSTSRESTAPI。按照说明,我使用刷新令牌刷新访问令牌。今天早上,刷新令牌停止工作。它们过期了吗?如果访问令牌和刷新令牌都已过期,如何继续?我在这上面找不到任何东西


供参考:

是,刷新令牌将过期,您需要发送重新授权请求以再次获取访问令牌和刷新令牌(您之前的授权步骤)


获取新的访问令牌后,先前的访问令牌和刷新令牌已过期。

是的,刷新令牌将过期,您需要发送请求重新授权以获取访问令牌和刷新令牌(您先前的授权步骤)


获取新的访问令牌后,以前的访问令牌和刷新令牌已过期。

我管理实现此流的团队。@starain的答案是正确的,OAuth 2规范中详细描述了该流程。您观察到@scottndecker频繁地使刷新令牌无效,这与实现不一致。系统中的刷新令牌的默认生存期为一年。用户也可以手动使令牌无效。显然,我们必须尊重用户撤销先前授予的授权的权利。如果您想分享更多信息,我们当然可以研究此行为。

我管理实施此流程的团队。@starain的答案是正确的,OAuth 2规范中详细描述了该流程。您观察到@scottndecker频繁地使刷新令牌无效,这与实现不一致。系统中的刷新令牌的默认生存期为一年。用户也可以手动使令牌无效。显然,我们必须尊重用户撤销先前授予的授权的权利。如果您想共享更多信息,我们当然可以研究此行为。

似乎当auth.token过期(一小时后)时,auth.refreshttoken也会变得无效?那么auth.refreshtoken的用途是什么?当我在jwt.io上解码auth.refreshttoken时,它应该在2020年某个时候过期。(现在是2019年)

当auth.token有效时,我可以刷新并获取新的令牌。那么,我是否应该设置一个作业,在一小时内刷新令牌

文件声称:
如果用户的访问令牌过期,则可以使用在授权流中获取的刷新令牌来获取新的访问令牌。此过程类似于将授权代码交换为访问令牌和刷新令牌的原始过程。

似乎当auth.token过期(一小时后)时,auth.refreshttoken也会变得无效?那么auth.refreshtoken的用途是什么?当我在jwt.io上解码auth.refreshttoken时,它应该在2020年某个时候过期。(现在是2019年)

当auth.token有效时,我可以刷新并获取新的令牌。那么,我是否应该设置一个作业,在一小时内刷新令牌

文件声称:
如果用户的访问令牌过期,则可以使用在授权流中获取的刷新令牌来获取新的访问令牌。此过程类似于将授权代码交换为访问令牌和刷新令牌的原始过程。

用户是否必须再次查看重新授权页面并再次单击“接受”?或者您是否存储原始授权码并重新使用?谢谢@scottndecker根据我的测试,授权页面将再次出现,我也需要单击“接受”按钮;我已经实现了这一点,它确实有效。虽然这是非常次优的,但我希望MS将来会改进它。在你的生活中,还有什么时候你不得不第二次(或第三次或第四次)访问某个应用程序?如果用户仅每隔几天登录一次,则每次都必须单击“接受”。那不好。刷新令牌需要使用更长的时间(>10天),或者需要有一种在幕后获得新刷新令牌的方法,而无需用户再次单击“接受”。@scottndecker正如Christopher所说,刷新令牌的过期时间为一年,您可以通过此站点()解码刷新令牌,exp值为过期时间。(令牌发行/通用通用时间与1970,1,1之间的差秒数),生成秒数C#(dateTime.ToUniversalTime().Subtract(new dateTime(1970,1,1)).TotalSeconds)的简单代码,并根据该秒数转换为实际时间(dateTime original=new dateTime(1970,1,1);DateTime actual=original.AddSeconds(i).ToLocalTime();)用户是否必须再次查看重新授权页面并再次单击“接受”?或者您是否存储原始授权码并重新使用?谢谢@scottndecker根据我的测试,授权页面将再次出现,我也需要单击“接受”按钮;我已经实现了这一点,它确实有效。虽然这是非常次优的,但我希望MS将来会改进它。在你的生活中,还有什么时候你不得不第二次(或第三次或第四次)访问某个应用程序?如果用户仅每隔几天登录一次,则每次都必须单击“接受”。那不好。刷新令牌需要使用更长的时间(>10天),或者需要有一种在幕后获得新刷新令牌的方法,而无需用户再次单击“接受”。@scottndecker正如Christopher所说,刷新令牌的过期时间为一年,您可以通过此站点()解码刷新令牌,exp值为过期时间。(令牌发行/通用通用时间与1970,1,1之间的差秒数),生成秒数C#(dateTime.ToUniversalTime().Subtract(new dateTime(1970,1,1)).TotalSeconds)的简单代码,并根据该秒数转换为实际时间(dateTime original=new dateTime(1970,1,1);DateTime实际值=原始值。添加秒数(i)。ToLocalTim