2016-01-23 79 views
0

我正嘗試使用oAuth通過SSL訪問V3版本的WooCommerce REST API進行身份驗證。無法通過SSL在WooCommerce API上使用oAuth身份驗證

WooCommerce正在運行的我正在調用的Wordpress實例使用AWS Elastic Beanstalk進行託管。

當試圖使用oAuth我得到一個401響應。 該請求針對取得的URL是 https://www.example.com/wc-api/v3/products?oauth_consumer_key=[my_key]&oauth_nonce=[nonce]&oauth_signature=[signature]%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1453572852&oauth_token=&oauth_version=1.0&filter%5Blimit%5D=500

作爲應對措施的一部分,我得到

[WWW-Authenticate] => Array 
    (
     [0] => Basic realm="WooCommerce API. Use a consumer key in the username field and a consumer secret in the password field" 
    ) 

我知道消費者密鑰和祕密我使用的都是精品,因爲我已經能夠使用他們在對同一站點的基本認證請求中成功完成。

我在我的開發環境(這不是在AWS上)測試了相同的oAuth代碼對非ssl地址,它工作正常。

我知道WooCommerce說你必須使用oAuth來處理http地址的請求 - 但是與你不能在https上使用oAuth請求的情況相反嗎?或者有什麼我需要配置服務器端,這可能與我的開發環境和AWS上的生產環境有所不同?

回答

3

如果你看一下woocommerce/includes/api/class-wc-api-authentication.phpauthenticate功能說:

if (is_ssl()) { 
    $keys = $this->perform_ssl_authentication(); 
} else { 
    $keys = $this->perform_oauth_authentication(); 
} 

這意味着你不能使用OAuth對HTTPS。 (據woocommerce你不用)。

SSL加密的請求都不會受到嗅探或 人在這方面的中間人攻擊,因此請求可以通過 進行身份驗證只是尋找了相關的用戶給定的消費者密碼和 確認提供的消費者密碼是有效的