Server-side使用Apple流登錄時的nonce驗證

我正在努力理解登錄蘋果。我假設有一個應用程序服務器、一個ios應用程序和蘋果身份驗證提供商。在WWDC 2020 session“充分利用蘋果登錄”中,蘋果對授權請求中的nonce值有這樣的說法:

但正如我們之前提到的,該請求還具有一些屬性,可以幫助使授權過程更加安全。這些是nonce和state。

這些屬性將允許您驗證在執行請求后獲得的授權和憑據是否是您所期望的。讓我們先來談談這些屬性是什么。nonce是在請求中作為字符串發送的不透明數據塊。每次創建新請求時都要生成一個唯一的nonce,這一點很重要,因為稍后您將能夠驗證此值。

為了做到這一點,nonce值將被返回給您,嵌入到授權憑據的identityToken屬性中。

這將允許您在服務器中驗證此值,有助于防止重播攻擊。

我的理解是:應用程序客戶端為發送到蘋果服務器的授權請求創建一個可上調的nonce。如果一切順利,蘋果將返回一個包含相同nonce的身份令牌。客戶端可以檢查身份令牌是否包含與請求中包含的隨機數值相同的隨機數,然后繼續將JWT發送到應用程序服務器,應用程序服務器可以使用蘋果的公鑰和簽名來確保JWT確實由蘋果簽名,從而確保用戶是他們聲稱的用戶。

但蘋果公司說

這將允許您在服務器中驗證此值,有助于防止重播攻擊。

(Emphasis mine)

在我描述的流程中,我的應用程序服務器不知道nonce,因此無法驗證任何有關它的信息。這里的建議是客戶端在創建授權請求之前先從應用程序服務器請求nonce(和session id)嗎。然后將該nonce作為授權請求的一部分發送,然后將包含nonce和session id的JWT發送到應用程序服務器?這樣,應用程序服務器也可以驗證隨機數是否確實與session開始時分配的隨機數相同?

? 最佳回答:

您可以向服務器請求狀態和隨機數,但我不會,因為這可能是攻擊向量。

最好在應用程序中生成狀態和nonce。然后將這些內容包含在身份驗證請求中。

一旦你的應用程序收到蘋果的響應,它就可以驗證狀態是否與預期的狀態匹配。

然后將身份令牌和預期的nonce值發送到服務器。服務器驗證JWT是否由Apple簽名并包含預期的nonce。

主站蜘蛛池模板: 韩国一区二区三区视频| 高清一区二区三区日本久| 无码日韩精品一区二区三区免费| 亚洲av乱码一区二区三区香蕉| 北岛玲在线一区二区| 国产怡春院无码一区二区| 日韩精品一区二区三区中文| 中文字幕日本一区| 国产激情一区二区三区成人91 | 国产乱码精品一区二区三区中文| 国产视频一区在线播放| 日本一区二区三区免费高清 | 中文字幕一区二区在线播放| 免费观看日本污污ww网站一区| 亚洲AV无码一区二区乱子仑| 亚洲一区二区三区首页| 久久99国产精一区二区三区| 国产在线精品一区二区中文| 久久久久国产一区二区| 久久精品国产第一区二区| 中文字幕一区二区区免| 日本一区二区不卡在线| 国产精品视频一区二区三区无码| 国产在线精品一区免费香蕉| 亚洲一区二区三区乱码A| 国产精品污WWW一区二区三区| 国产精品 视频一区 二区三区| AV怡红院一区二区三区| 国产美女视频一区| 国产一区二区三区久久| 88国产精品视频一区二区三区| 91福利一区二区| 欧美av色香蕉一区二区蜜桃小说| 久久精品免费一区二区喷潮| 国产在线观看一区二区三区| 中文字幕一区二区三区免费视频| 亚洲乱码国产一区三区| 无码乱码av天堂一区二区| 正在播放国产一区| 久久AAAA片一区二区| 无码精品黑人一区二区三区|