据我了解,OAuth 2 中发生以下事件链,以便 Site-A
从 Site-B
访问用户信息.
-
Site-A
注册于Site-B
,并获取Secret和ID。 - 当用户告诉
Site-A
时访问Site-B
,用户被发送至Site-B
他们告诉的地方Site-B
他们确实愿意给予Site-A
特定信息的权限。 -
Site-B
将用户重定向回Site-A
,以及授权码。 -
Site-A
然后将该授权代码及其 secret 传递回Site-B
以换取安全 token 。 -
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/