2012-07-20 60 views
3

我試圖建立一個與門衛OAuth2提供商,我想測試所有現有的流量,但卡住了第一次嘗試。門衛訪問令牌

我想測試授權碼流。一切工作正常獲得授權代碼,但一旦我嘗試獲取訪問令牌的東西得到錯誤。下面提到的是一些步驟。

 describe 'when sends an access token request' do 

     let(:access_params) do 
      { grant_type: 'authorization_code', 
      code:   authorization_code, 
      redirect_uri: application.redirect_uri } 
     end 

     let(:access_uri) { '/oauth/token' } 

     before { page.driver.post access_uri, access_params } 

     it 'returns valid json' do 
      pp page.source 
     end 

我期待與最終訪問令牌的JSON,但我得到了這個錯誤。我很好地檢查了客戶和參數。一切對我來說都很好。

 {"error":"invalid_client","error_description":"Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method."} 

你能幫助我理解缺失的是什麼嗎? 謝謝

+0

任何你想測試這些流程的原因? OAuth流在門衛 – 2012-07-22 06:48:53

+0

中測試得很好我知道,我一直在深入挖掘代碼。我仍然必須檢查這些功能,因爲我的一些邏輯可能會破壞它們。當你得到一個引擎對你來說非常重要的事情時,爲主要使用場景構建一些集成測試是一種很好的做法 – 2012-07-23 10:18:29

回答

2

我終於搞定了。我錯過了關於OAuth2規範的一個重要方面,客戶端必須使用基本身份驗證來標識自己。我解決了在帖子前添加它,它工作得很好。

before do 
    page.driver.browser.authorize application.uid, application.secret 
    page.driver.post access_uri, access_params 
    end