oauth-2.0 - OAuth 2 如何使用安全 token 防止重放攻击等行为?

标签 oauth-2.0

据我了解,OAuth 2 中发生以下事件链,以便 Site-ASite-B 访问用户信息.

  1. Site-A注册于Site-B ,并获取Secret和ID。
  2. 用户告诉Site-A时访问Site-B用户被发送至Site-B他们告诉的地方Site-B他们确实愿意给予 Site-A特定信息的权限。
  3. Site-B用户重定向回Site-A ,以及授权码。
  4. Site-A然后将该授权代码及其 secret 传递回 Site-B以换取安全 token 。
  5. Site-A然后向 Site-B 发出请求通过将安全 token 与请求捆绑在一起,代表用户

所有这些在安全和加密方面如何在高水平上发挥作用? OAuth 2 如何使用安全 token 防止重放攻击等行为?

最佳答案

OAuth 2.0 在现实生活中的工作原理:

我在上类的路上开车经过奥拉夫的面包店,当时我看到橱窗里有最美味的 donut ——我的意思是,那东西正滴着巧克力味。所以我进去要求“我一定要吃那个 donut !”。他说:“当然是 30 美元。”

是的,我知道,一个 donut 30 美元!一定很好吃!当我伸手去拿钱包时,突然我听到厨师大喊“不!没有 donut 给你”。我问:为什么?他说他只接受银行转账。

认真的吗?是的,他是认真的。我差点就走开,但 donut 突然对我喊道:“吃我吧,我很好吃……”。我是谁,竟敢违抗 donut 的命令?我说好吧。

他递给我一张写有他名字的纸条(厨师,而不是 donut ):“告诉他们奥拉夫派你来的”。他的名字已经在纸条上了,所以我不知道这样说有什么意义,但是好吧。

我开车一个半小时到银行。我把纸条递给出纳员;我告诉她是奥拉夫派我来的。她给了我一种眼神,那种眼神仿佛在说“我能读书”。

她拿走了我的纸条,要了我的身份证,问我可以给他多少钱。我告诉她30美元。她潦草地写了一些,然后递给我另一张纸条。这个上面有一堆数字,我猜这就是他们记录笔记的方式。

那时我快饿死了。我冲出了那里,一个半小时后我回来了,站在奥拉夫面前,递出了我的纸条。他接过它,看了看,然后说,“我会回来的”。

我以为他正在拿我的 donut ,但 30 分钟后我开始怀疑。所以我问柜台后面的人“奥拉夫在哪里?”。他说:“他去拿钱了”。 “你是什么意思?”。 “他给银行做记录”。

嗯...所以奥拉夫拿着银行给我的纸条,回到银行从我的账户里取钱。由于他有银行给我的票据,银行就知道他就是我所说的那个人,而且因为我与银行交谈过,他们知道只给他 30 美元。

我一定花了很长时间才弄清楚这一点,因为当我抬起头时,奥拉夫站在我面前终于递给我我的 donut 。在我离开之前,我不得不问:“奥拉夫,你总是这样卖 donut 吗?”。 “不,我以前的做法不同。”

嗯。当我走回车时,手机响了。我懒得接,可能是我的工作打电话要解雇我,我的老板真是个 SCSS 。此外,我还在思考我刚刚经历的过程。

我的意思是想一想:我可以让奥拉夫从我的银行账户中取出 30 美元,而不必向他提供我的账户信息。而且我也不用担心他会取出太多钱,因为我已经告诉银行他只允许取出30美元。银行知道他是合适的人选,因为他有他们给我的票据让我转交给奥拉夫。

好吧,当然我宁愿从口袋里掏出 30 美元给他。但现在他有了这张纸条,我可以告诉银行让他每周提取 30 美元,然后我就可以直接出现在面包店,而不必再去银行了。如果我愿意的话,我什至可以通过电话订购 donut 。

当然我永远不会那样做——那个 donut 太恶心了。

我想知道这种方法是否有更广泛的应用。他提到这是他的第二种方法,我可以称之为 Olaf 2.0。无论如何,我最好回家了,我得开始寻找新工作了。但在我从城对面的新地方买一杯草莓奶昔之前,我需要一些东西来洗掉 donut 的味道。

关于oauth-2.0 - OAuth 2 如何使用安全 token 防止重放攻击等行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4727226/

相关文章:

node.js - 使用 Passport-google-oauth20 时无法访问重定向 URL

python - 如何用授权码换取访问 token Twitter API?

java - Spring security oauth2 - 从 OAuth2 主体获取自定义数据

Spring Security 5.2 密码流程

php - 是否可以在没有 javascript 的情况下实现 Oauth 2.0?

java - 使用 OAuth2ClientAuthenticationProcessingFilter 通过 Spring Boot 登录 Google Oauth2

python - oauth、python 和谷歌 API?

express - 在同一浏览器上同时访问两个应用程序模块且用户尚未登录时授予提供者 OAuth 状态不匹配

python-3.x - 使用 google flow 2.0 时无法将用户重定向到 auth_uri

oauth-2.0 - 哪些 Google OAuth2 范围被视为 "sensitive"的列表在哪里?