亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Firebase 3中仍然可以對令牌進行服務器端驗證嗎?

在Firebase 3中仍然可以對令牌進行服務器端驗證嗎?

月關寶盒 2019-10-17 10:25:34
在Firebase 3中仍然可以對令牌進行服務器端驗證嗎?我們使用現有的身份驗證系統(使用服務帳戶)在運行Golang的服務器上生成自定義令牌(JWT)。該令牌在iOS客戶端上使用FIRAuth.auth()?.signInWithCustomToken(customToken)到那為止一切正常。但是,當我們將客戶端令牌傳遞給從以下位置檢索的服務器時:FIRUser.getTokenWithCompletion({ token, error in ..})我們無法驗證它。JWT令牌使用RS256簽名并具有header.kid,我們無法識別。服務帳戶中的公共密鑰(用于簽署自定義令牌)不會驗證客戶端令牌。驗證客戶端令牌所需的公鑰是否可用?我知道可以使用Java或Javascript中的“ verifyIdToken”調用來驗證客戶端令牌,但是我們希望能夠使用標準JWT庫在Golang中做到這一點。所有這些在Firebase 2(使用HS256和Firebase機密)中都可以正常工作。
查看完整描述

2 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

那么火力不允許核查custom tokens他們所做的事情是為了讓驗證id tokens他們在登錄使用自定義的令牌一旦用戶生成。因此,就像我一樣,如果您將Firebase自定義令牌傳遞給其他服務以通過后端進行身份驗證,那么自定義令牌驗證的責任就在您身上!此外,Google服務帳戶的X509 cert格式不正確。它具有這些\n (new line)定界符,這些定界符不會在文本編輯器中被換行(我使用vim)。因此,我所做的是這樣的:


  val factory = CertificateFactory.getInstance("X.509")

  val certificateFile = this.getClass.getResourceAsStream(Play.current.configuration.getString("firebase.certificate").get)

  val publicKey = factory.generateCertificate(certificateFile).asInstanceOf[X509Certificate].getPublicKey

  val claimBody = Jwts.parser().setSigningKey(publicKey).parseClaimsJws(compactJws).getBody

得到谷歌的服務帳戶鏈接證書中下載的JSON規定而設立火力

手動更換\n新線

獲取JWT庫。我使用了這個很棒的庫來驗證Java JWT

閱讀證書并提取公共密鑰。

使用公鑰驗證令牌

確保您還有另一個API可以刷新令牌,因為僅一個小時有效

希望有幫助!


查看完整回答
反對 回復 2019-10-17
  • 2 回答
  • 0 關注
  • 822 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號