C# 如何使我自己的web API手动或强制生成的访问令牌过期

C# 如何使我自己的web API手动或强制生成的访问令牌过期,c#,asp.net,security,oauth,oauth-2.0,C#,Asp.net,Security,Oauth,Oauth 2.0,我在asp.net Web API中创建了一个Web API生成访问令牌并存储在浏览器存储缓存或会话存储中如果有人从浏览器中窃取了访问令牌,他可以使用fiddler或Post Man公开API数据,那么我们如何防止该问题我们如何手动或强制终止令牌我不认为您可以使以这种方式生成的访问令牌过期。访问令牌在其生命周期内都是好的。这就是为什么access tokens(访问令牌)是短期令牌,通常为一小时 即使让用户撤销他们的同意也不会使访问令牌过期 也就是说,OAuth 2.0令牌撤销规范为核心规范补充

我在asp.net Web API中创建了一个Web API生成访问令牌并存储在浏览器存储缓存或会话存储中如果有人从浏览器中窃取了访问令牌,他可以使用fiddler或Post Man公开API数据,那么我们如何防止该问题我们如何手动或强制终止令牌我不认为您可以使以这种方式生成的访问令牌过期。访问令牌在其生命周期内都是好的。这就是为什么access tokens(访问令牌)是短期令牌,通常为一小时

即使让用户撤销他们的同意也不会使访问令牌过期

也就是说,OAuth 2.0令牌撤销规范为核心规范补充了一种机制来撤销这两种类型的令牌。令牌是一个字符串,表示资源所有者向客户端颁发的授权授予。撤销请求将使实际令牌以及基于相同授权授予和授权授予本身的其他令牌(如果适用)失效

POST /revoke HTTP/1.1
 Host: server.example.com
 Content-Type: application/x-www-form-urlencoded
 Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW

 token=45ghiukldjahdnhzdauz&token_type_hint=access_token

但是,只有当您使用身份验证服务器获取访问令牌并且身份验证服务器支持此端点时,这可能才起作用。例如,IIR Googles只支持撤销刷新令牌,而不支持撤销访问令牌。这不是默认情况。我自己从来没有实现过,这可能需要将访问令牌存储在auth服务器上,然后以某种方式进行测试,而不是让它成为标准JWT。

通常的机制是引入刷新令牌。让访问令牌有一个短的生命周期,比如一天,并有一个长的刷新令牌,每天请求新的访问令牌。然后,可以要求服务器通过禁用刷新令牌的访问来撤销对特定帐户的访问