消费者和提供者
问题描述:
之间代理的OAuth的要求,我们有一个问题1.0A请求与消费者(客户端)之间的中间代理服务器和提供商(服务器的OAuth)如何代理的OAuth。消费者和提供者
基本上它看起来是这样的:
------------
| Consumer |
------------
|
V
------------
| Proxy |
------------
|
V
----------------
| oAuth Server |
----------------
可能的问题,我们想到的是,重新发送HTTP请求到我们的OAuth服务器时,代理服务器的Apache将设置一些请求标题为不同的值,并且当请求在oAuth服务器上签名时,签名将不匹配。
您是否知道代理服务器是否可以在不做任何修改的情况下重新发送请求,因此签名将在oAuth情况下有效?
我们正在考虑的另一个选择是在签名前在oAuth服务器上替换已修改的标头,从而将请求修改为不是来自代理,而是直接来自客户端。你认为这在PHP中是可行的 - 替换请求的头部,例如$ _SERVER变量?
谢谢
答
原来,请求签名时使用客户端唯一的HTTP标头是HTTP主机头。如果oAuth参数作为OAuth标头传递,则不包含特殊的OAuth标头。
所以代理服务器应该做的唯一事情就是向我们发送客户端用来签署请求的HOST头。
例子: 让我们假设,如果客户(消费者)正在HTTP请求到代理服务器,以获得令牌,它发送请求到以下端点:
在这种情况下,请求将是这样的,并且在对请求进行签名时将使用值为proxy.com的主机头。
POST /oauth/request HTTP/1.1
Host: proxy.com
假设,即在此我们的OAuth服务器期望请求的端点是:
当代理服务器收到请求时,它可以将其重新发送到我们的端点和在额外的HTTP标头中给我们提供值proxy.com,我们可以用它来在我们身边签署请求,而不是使用原来的HOST标头,这将与value.comite.com