我们有一个与oAuth 1.0(LTI学习管理系统使用的版本)一起使用的SSO网关页面。我们即将更改此网关所在的域。但是因为许多客户可能不会立即更新他们的链接,我们希望将旧域重定向到新页面。因为这使用POST数据,我们需要将此POST数据传递到新位置。我尝试过使用cURL以及一个简单的javascript重新发布(捕获所有POST参数,然后将它们放回到表单中并自动发布)。在这两种情况下,似乎正确地传递了帖子数据。但是outh_signature不匹配,所以我们得到验证失败。
当使用javascript repost方法时,我打印出了重定向页面上的帖子数据,当它点击oAuth SSO页面时。 POST数据完全相同。所以我无法弄清楚为什么oAuth会失败。关于referer页面的POST数据中没有任何内容。我确实在oAuth库中看到了一些关于HTTP_REFERER的引用。那么问题是创建签名的原始页面与正在进行引用的重定向页面具有不同的URL吗?我确实尝试手动将$ _SERVER ['HTTP_REFERER']值设置为原始引荐来源,但这并没有解决问题。
如果您想知道,我们不能简单地在旧网址上放置信息页面,因为SSO访问的用户不是设置链接的用户。 (人们通过应用程序链接,而不是通过我们控制的网页链接)我不知道它是否会产生影响,但我们无法更改oAuth版本,因为这是LTI使用的版本。
感谢您的帮助。
答案 0 :(得分:0)
在进一步使用oAuth代码之后,我确实确认推荐uri是相关的。用于创建签名的SSO页面的基本字符串包括uri。提交SSO请求的应用程序使用它发送请求TO的URI。通常,这些是相同的。在我们设置的情况下,它们现在可以是不同的。所以我只需要在代码中添加一些东西来修改基本字符串。