2014-01-17 43 views
1

我正在嘗試使用OAuth2 grant_type = password作爲令牌請求,如here與WSO2 API Manager一樣。使用下面的curl命令。wso2 API管理器「不支持的客戶端身份驗證方法!」

curl -k -d "grant_type=password&username=<uname>&password=<pwd>&scope=PRODUCTION" http://localhost:8280/token 

從這個請求的響應是:

{"error":"invalid_request","error_description":"Missing parameters: client_id"} 

接下來,我提供我的消費鍵和捲曲的要求變爲:

curl -k -d "grant_type=password&username=<uname>&password=<pwd>&scope=PRODUCTION&client_id=<myconsumerkey>" http://localhost:8280/token 

然而,反應是莫名其妙:

{"error":"unsupported_client_authentication_method","error_description":"Unsupported Client Authentication Method!"} 

所以,我的問題是API Man是否不支持這個grant_type?或者,我在這裏做錯了什麼嗎?我應該看看這個授權類型的身份服務器嗎?

乾杯

回答

0

要發送的HTTP基本授權頭的客戶端憑證(客戶端密鑰和密碼)。捲曲命令將如下所示。這裏使用「--user client-Key:client-Secret」來使用curl命令創建基本授權標頭。您可以對您的值使用以下命令。

捲曲--user tFVhXORF35S9TTyeaZIH2IEXEw4a:4h6fq4jgRYKrr4v91A_zQgw4Xtoa -k -d 「grant_type =密碼&用戶名=管理員&密碼=管理員」 -H 「內容類型:應用程序/ x WWW的形式進行了urlencoded」 HTTPS://{IP}:{端口}/oauth2 /令牌

加入此更多,我猜WSO2API不支持在請求正文中接收客戶端憑據。根據OAuth 2.0規範,不推薦使用。請檢查here

+0

謝謝@Asela。在這種情況下,我沒有客戶端密鑰或客戶端密鑰。因此,我試圖使用資源所有者密碼授予來檢索令牌。我想我看到的唯一選擇是使用store api登錄,然後檢索密鑰和祕密,然後生成對api標記的請求。有什麼想法嗎? –

+0

通常,當您使用資源所有者密碼授權類型時,您還需要認證客戶端http://tools.ietf.org/html/rfc6749#section-4.3.2基本上,因爲您是應用程序開發人員,您必須註冊應用程序並從API存儲接收客戶端憑證。 – Asela

相關問題