小ck包包防伪码在哪里:Oauth2授权码流:我在哪里存储授权码

关于小ck包包防伪码在哪里的问题,在oauth authorization flow中经常遇到, 我的问题是,一旦我从我的授权服务器生成授权代码,通过概念,我在哪里存储它,以便当客户端应用程序请求交换访问令牌时,我可以验证授权代码是否有效?

我的问题是,一旦我从我的授权服务器生成授权代码,通过概念,我在哪里存储它,以便当客户端应用程序请求交换访问令牌时,我可以验证授权代码是否有效?

3

您可以将代码存储在任何您想要的地方-在您的服务器内存中 (作为地图中的对象),在数据库或任何其他安全存储中。如果您的服务器只是一个应用程序 (只有一个 RAM),您可以将代码存储在内存中,如果您不介意在应用程序重新启动期间丢失它们。但是如果您想运行应用程序的多个实例 (例如在 Kubernetes 中) 或服务器由多个应用程序组成,您将需要使用一些外部存储

使用代码,您将需要保留元数据,例如 client_id,validity,PKCE属性(code_challenge_method,code_challenge)等。当您收到希望将代码交换为令牌的令牌端点的请求时,您需要在存储中查找代码,比较相关元数据(client_id,PKCE code_verifier,client_secret)

但是你应该让代码有一个时间戳,说明令牌是什么时候发出的。而且你应该能够从代码中找到什么令牌发出的。因为如果你收到另一个/token具有相同代码的交换请求,你应该使所有发出的令牌无效-代码可能被盗了。

阅读OAuth2 Security RFC是很好的考虑因素。

0

您可以创建一个全局数据结构map,并将 client_id 映射到 auth 代码,并在交换访问令牌后删除它们,这是一个非常简单的有效解决方案,只要它正确实现和 auth 代码并正确删除。

由于交换直接发生,您不需要担心堆填充,因为 auth 代码在很短的时间内创建和删除,从而产生空间。假设每分钟有 1000 个用户登录,在大多数情况下,假设交换超时 1 分钟(应该是这种情况),1000 个元素的数据结构是非常可接受的

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(784)
浏览器不支持websocket:现代浏览器不支持blink标签吗(modern blink)
上一篇
C 30 s 6:Javascript检查时间是否在上午8:30和下午6:30之间
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(4条)