2013-05-20 22 views
3

我有一些問題了解如何使用oAuth2rize和passport.js實現資源所有者密碼流,具體是傳輸client_id和client_secret以便我可以對客戶端進行一些檢查,以確保使用特定的「密碼」授權類型進入該端點(/令牌)的任何內容都是專門的官方應用程序,而不是基於該標識和密碼的其他內容。使用oAuth2orize爲「資源所有者密碼流」傳遞可信的客戶端信息

在構建解決方案時,我可以取回令牌,但是之前我曾試圖在客戶端上進行任何驗證。當我嘗試訪問傳遞給密碼交換策略的客戶端變量(發佈到終點)時,我收到基於文檔的用戶憑據(用戶名,密碼),但不是我需要在此處實現的用戶憑據。

我不知道如何獲得實際的客戶端憑據,我可以在密碼功能源代碼中看到,您可以提供其他選項來覆蓋對req ['user']的默認分配,但這是否意味着我必須提供某種代碼才能添加到req對象中?

我已經安裝了一些集成測試,這裏是我怎麼叫我的終點(使用SuperTest):

   request('http://localhost:43862') 
        .post('/oauth/token') 
        .type('form') 
        .send({ grant_type: 'password' }) 
        .send({ client_id: 'goodClient' }) 
        .send({ client_secret: 'asecret' }) 
        .send({ username: '[email protected]' }) 
        .send({ password: 'goodpassword' }) 
        .expect(200, done); 

出於某種原因,我似乎在想這是完全,但由於某種原因,我完全難住了。 ...

回答

3

正如預期的是,我們使用一個本地策略,而不是用發出的令牌前的密碼交換中的用戶驗證發生的ClientPasswordStrategy的理解問題。

我們現在使用的ClientPasswordStrategy和exchange.password函數中,我們呼籲,並給我們的用戶API內部調用來驗證用戶憑據,如果確定,然後發出令牌。

+0

謝謝..你的問題對我很有幫助。真的感謝 –

相關問題