我試圖做一些看起來很簡單的事情,但最終難以實現,因爲我缺乏專業知識。驗證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文件中portecle(http://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只提供SHA256withRSA。 http://jwt.io給出RS256和HS256之間的選擇,一個使用密鑰,另一個使用密鑰(公/私)。我猜我需要使用RS256? (但是再次,我似乎只有SHA1證書來自密鑰)
- 有沒有人在我所做的事情中取得成功?安裝WSO2 APIM,生成JWT並根據http://jwt.io驗證JWT,包括簽名?
- 如果我使用諸如https://github.com/tymondesigns/jwt-auth之類的庫來驗證JWT,它會工作嗎?我被告知這個庫不支持SHA256。
- 在APIM我在一個租賃公司,名爲沙箱。如果我去超級租賃碳我看到wso2carbon.jks。如果我去我自己的租賃的碳,我看到sandbox.jks,但它是空的,在部署機器上沒有相應的文件。如何解決這個問題,租戶JKS僅在使用時存在,還是存儲在數據庫而不是文件系統中?
- 我可以在公共論壇上看到我的代幣,智威湯遜等多少錢? :-)(如果它幫助我,我願意分享!)
感謝您的任何提示! (也許我需要的是默認公鑰,因爲我使用的是默認密鑰庫!)