我嘗試使用OAuth提供者在PHP(PECL包)一個apache的背後反向代理背後反向代理的Oauth提供商
客戶端使用
POST https://api.com/resource/oauth/request-token
但我的OAuth提供者接收
POST http://api.com/mywebservice/resource/oauth/request-token
簽名無法驗證所以請求失敗
你有什麼想法關於解決這個問題?
我嘗試使用OAuth提供者在PHP(PECL包)一個apache的背後反向代理背後反向代理的Oauth提供商
客戶端使用
POST https://api.com/resource/oauth/request-token
但我的OAuth提供者接收
POST http://api.com/mywebservice/resource/oauth/request-token
簽名無法驗證所以請求失敗
你有什麼想法關於解決這個問題?
我不得不這樣做一次。我最終修改了OAuth代碼,以傳遞供應商將收到的實際URL以及我需要從代理服務器後面發送的URL。前者用於簽名,後者用於HTTP請求。這是一個痛苦和無法移植(如果有的話在代理改變,代碼將停止工作)
我們有同樣的問題(不太複雜的地方我們反向代理正在改變HTTPS對HTTP網絡內部)。
您可以啓用負載平衡器(您正在使用反向代理等等)轉發適當的頭部方案(及以上)。
例如在Nginx的,你可以充分利用這兩種:
proxy_set_header X-Forwarded-Proto https;
和
proxy_redirect .... ;
這可能不是一個直接的上下文解決這個老問題,但我用了7小時試圖調試我們問題,所以我相信這會派上用場。