我使用Google's OpenIDConnect authentication,我想驗證從Google返回的JWT id_token
。但是,文檔似乎並不一致,Google在ID標記中爲iss
(發行者)聲明返回的值爲多少。我可以爲Google OpenIDConnect id_token獲得一致的'iss'值嗎?
One page說,「ISS:總是accounts.google.com」,但another page說「在ID令牌ISS的值等於或accounts.google.com
https://accounts.google.com
」,並在示例代碼中的註釋進一步解釋:
// If you retrieved the token on Android using the Play Services 8.3 API or newer, set
// the issuer to "https://accounts.google.com". Otherwise, set the issuer to
// "accounts.google.com". If you need to verify tokens from multiple sources, build
// a GoogleIdTokenVerifier for each issuer and try them both.
我有一個服務器端應用程序,而不是一個Android應用程序,所以我沒有使用Play服務。
爲了進一步渾水摸魚,the OpenIDConnect specification itself包含一個需要注意的是:
實施者可能想知道,截至發稿時,谷歌的部署ID連接實施問題ID令牌省略所需https://來自iss(發行者)聲明值的計劃前綴。希望與Google合作的依賴方實施因此需要有代碼來解決這個問題,直到他們的實施更新。任何這樣的解決方法代碼應該以不會中斷的方式編寫,Google會將缺少的前綴添加到其發佈者值中。
該文件的日期爲2014年11月8日。從那時起,谷歌是否已經對iss
價值進行了標準化,還是我真的需要檢查兩者?上面的評論似乎表明,只有播放服務> = 8.3獲得iss
與https://
,而其他地方的值將只是accounts.google.com
。真的嗎?
並且在該頁面上此刻還表示:「ID令牌中的iss值等於」accounts.google.com「或」https:// accounts.google.com「。 –
同意;如果你沿着這條路走下去,你可能必須檢查兩種可能性 –
謝謝,這並不能完全回答我的問題,因爲你一般在談論如何驗證Google'id_token'。我具體詢問'iss'字段。聽起來好像你在說「不,沒有辦法獲得一致的價值,你必須檢查兩種可能性。」 – bjmc