2017-04-26 41 views
1

我試圖做一些看起來很簡單的事情,但最終難以實現,因爲我缺乏專業知識。驗證WSO2生成的JWT APIM 1.9.0:公鑰是什麼?

我有一個APIM部署沒有定製安全明智(不要擔心,它不是生產!)。所以它只有carbon.jks

我使用SAML2針對IDS對應用程序中的用戶進行身份驗證,然後使用帶有應用程序密鑰的APIM來處理從SAML2令牌生成的用戶令牌。我從APIM獲得了一個OAuth令牌,我用它來調用APIM中的API。 (請注意,我設法解決這個感謝另一個帖子前一段時間:-))

實現API的後端接收JWT作爲結果,包含標題,用戶信息和應用程序信息以及簽名。 對於我的第一次測試,我寫了自己的「hello world」後臺,記錄了智威湯遜。

我使用http://jwt.io設法閱讀我的JWT沒有任何問題。但它告訴我簽名是無效的。 爲了使簽名有效,我需要一個有效的公鑰。

我不知道在哪裏可以找到該密鑰。

我運行了RSA Public Key of WSO2carbon中描述的命令行並生成了.cert文件。我已經研究了.cert文件中porteclehttp://portecle.sourceforge.net/),但沒有發現任何的興趣,但在Windows中打開它給了我一個場「公鑰」,它看起來像「30 81 89 02 81 81 00 94 [...]「,相當長,十六進制顯然。

我試過這個,也是它的base64編碼表示,在http://jwt.io但沒有成功。

因爲我不知道在我的公鑰是的,我也看過: How to validate a JWT from WSO2 API Manager (和引用鏈接https://asankad.org/2013/12/05/obtaining-certificate-used-to-sign-a-jwt/) 但是所提供的代碼是對自己一點,用的語言甚至沒有提及。我假設它是node.js,但沒有關於libs或任何信息。

這裏有一些更精確的問題:

  • WSO2 APIM僅提供SHA256withRSA(這是SHA2 IIUC的味道)。 wso2carbon.jks我發現的證書是sha1。所以我認爲這不可能工作。 APIM如何使用SHA1證書生成SHA256?
  • WSO2 APIM只提供SHA256withRSAhttp://jwt.io給出RS256HS256之間的選擇,一個使用密鑰,另一個使用密鑰(公/私)。我猜我需要使用RS256? (但是再次,我似乎只有SHA1證書來自密鑰)
  • 有沒有人在我所做的事情中取得成功?安裝WSO2 APIM,生成JWT並根據http://jwt.io驗證JWT,包括簽名?
  • 如果我使用諸如https://github.com/tymondesigns/jwt-auth之類的庫來驗證JWT,它會工作嗎?我被告知這個庫不支持SHA256
  • 在APIM我在一個租賃公司,名爲沙箱。如果我去超級租賃我看到wso2carbon.jks。如果我去我自己的租賃的碳,我看到sandbox.jks,但它是空的,在部署機器上沒有相應的文件。如何解決這個問題,租戶JKS僅在使用時存在,還是存儲在數據庫而不是文件系統中?
  • 我可以在公共論壇上看到我的代幣,智威湯遜等多少錢? :-)(如果它幫助我,我願意分享!)

感謝您的任何提示! (也許我需要的是默認公鑰,因爲我使用的是默認密鑰庫!)

回答

0

回答我自己的情況下,任何人都有同樣的問題。

有兩件事情讓我出去:

  • 第一,在jwt.io驗證,我需要通過運行以下命令來更改證書編碼:openssl x509 -inform der -in somekey.cer -out somekey.pem
  • 然後我用的是超級租戶密鑰庫而不是租賃密鑰庫。我研究過這個,但在APIM虛擬機上找不到任何租戶密鑰庫。我只好:
    1. 日誌中的佔有者管理員在APIM碳門戶
    2. 導航到配置/密鑰庫
    3. 存在的租賃(被稱爲sandbox1.jks)一個密鑰,點擊在公鑰
    4. 保存下載sandbox1.cert,並將其轉換使用上述命令
    5. 爲PEM

產生的質子交換膜使用RS256

希望這有助於他人一起罰款jwt.io!