2016-03-01 75 views
0

此問題與ServiceStack OAuth身份驗證流程有關。調試FacebookAuthProvider我看到,如果代碼參數不爲空(從重定向到Facebook對話框URL獲得),它使用它來獲取訪問令牌。 AuthProvider和OAuthAuthorizer一樣。Servicestack身份驗證 - 使用已發佈的訪問令牌進行身份驗證

如何使用Javascript SDK獲取單頁應用程序的Access Token(彈出式模式,無重定向)。是否有任何終端使用發佈的訪問令牌對用戶進行身份驗證?

另外,你認爲這是一個安全漏洞?我相信,如果用戶首先使用憑證提供程序進行簽名,然後使用OAuth提供程序進行簽名,則ServiceStack會創建兩個分開的帳戶。如果服務器使用Facebook API驗證訪問令牌並返回有效的響應,我認爲應該可以在應用程序中籤署一個已經存在的用戶(我猜尋找任何AuthUserDetails與供應商等於facebook應該足以相信)。

回答

1

FacebookAuthProvider遵循相同的OAuth提供程序流程,以便每個其他OAuth提供程序都遵循該流程,在重定向到AuthProvider用於爲用戶檢索access_token之前,重定向到遠程OAuth站點以捕獲用戶授權。沒有任何內置的AuthProviders對任何JavaScript SDK都有依賴性。

ServiceStack不會創建2個獨立的用戶帳戶,它會創建1個用戶帳戶,這個用戶帳戶與他們通過身份驗證時驗證的每個AuthProvider鏈接。然後,用戶可以使用他們以前通過身份驗證的任何身份驗證提供程序進行身份驗證,以登錄其帳戶。

只有在用戶未通過Facebook身份驗證時,纔會創建一個單獨的用戶帳戶。但是,如果沒有使用同一個電子郵件註冊的現有UserAccount,它只會創建新帳戶,否則將失敗,並顯示EmailAlreadyExists錯誤。如果創建了單獨的用戶帳戶,則這些帳戶被視爲2個未鏈接的獨立帳戶(即具有不同的UserAuthId),在這種情況下,使用Auth Provider進行身份驗證將登錄到2個不同的用戶帳戶。

相關問題