首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么spring-social的ConnectController会以一个帖子来开始OAuth 2的“舞蹈”呢?

为什么spring-social的ConnectController会以一个帖子来开始OAuth 2的“舞蹈”呢?
EN

Stack Overflow用户
提问于 2016-02-05 07:58:09
回答 1查看 88关注 0票数 0

我正在尝试制作一个应用程序,可以通过OAuth2使用spring-social连接到Fitbit。I've had some troubles with this,但是我想我正在弄明白一些事情。我注意到,OAuth进程是通过向ConnectController发出POST来启动的。为什么这是通过POST而不是GET来完成的?我想要这样做,这样我就可以将一个链接放到聊天室中,用户可以点击这个链接来授权我的应用程序使用他们的Fitbit信息,这意味着我想从GET开始。这是不是有没有原因呢?如果我对此效果进行更改(通过将ConnectController子类化),我会遇到技术/安全问题吗?

EN

回答 1

Stack Overflow用户

发布于 2016-02-05 22:54:16

有两个原因:

  1. 主要原因是希望GET请求执行既安全又幂等的操作。但是作为该请求的结果,您可能(在OAuth 1.0(A)的情况下)最终获得并可能存储请求令牌,以及初始化与提供者的OAuth舞蹈。在安全请求的术语中,这不被认为是“安全”的。此外,它可能是幂等的,也可能不是幂等的,因为重复请求可能会导致不同的行为(取决于提供者的OAuth实现)。虽然这可能不适用于OAuth 2,但它需要在OAuth 1和OAuth 2之间保持一致。
  2. /{OAuth}路径表示单个资源。只有这么多HTTP谓词可供选择,而无需将谓词放入路径中。该路径的GET方法已分配给获取该提供程序的连接状态的请求(这是一个既安全又幂等的操作)。

即便如此,我还是遇到了您所询问的用例。当我觉得需要一个链接来启动OAuth流时,我所做的就是有一个表单可以发布到/connect/{provider},并让一些Javascript为我提交表单,无论是作为直接链接的结果(如果链接在应用程序中的页面上)还是作为页面加载的结果(如果链接是在电子邮件或聊天室中给出的)。

当然也欢迎您覆盖ConnectController的行为,甚至编写您自己的控制器实现来满足您的需求,即使它们违反了ConnectController实现方式背后的逻辑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35213991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档