我如何手动或通过我自己的Web API强制生成访问令牌

时间:2018-04-23 06:25:00

标签: c# asp.net security oauth oauth-2.0

我在asp.net web API中创建一个Web API它生成访问令牌并存储在浏览器存储缓存或会话存储中如果有人从浏览器中窃取了访问令牌,他可以通过使用它来公开API数据fiddler或Post Man所以我们如何防止这个问题我们如何手动或强制地使令牌过期

2 个答案:

答案 0 :(得分:2)

我认为你不能以这种方式生成访问令牌。访问令牌在其生命周期内是有益的。这就是访问令牌短期令牌的原因,通常是一小时。

即使让用户撤销他们的同意,也不会使访问令牌失效。

据说,OAuth 2.0 Token Revocation RFC 7009规范通过一种撤销两种类型令牌的机制来补充核心规范。令牌是表示资源所有者向客户端发出的授权授权的字符串。撤销请求将使实际令牌失效,并且如果适用,将使基于相同授权授权和授权授权本身的其他令牌无效。

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

但是,如果您使用身份验证服务器获取Access令牌并且身份验证服务器支持此端点,则这可能仅适用。例如,IIR Googles仅支持撤销刷新令牌而不支持访问令牌。这不是默认的事情。我自己从未实现它可能需要在auth服务器上存储访问令牌,然后以某种方式测试,而不是让它成为标准的JWT。

答案 1 :(得分:0)

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