2016-12-08 20 views
0

使用OAuth時,我們使用第三方來照顧用戶的身份驗證。
例如當使用Facebook時,我們會在Facebook上「註冊」我們的應用程序,當我們的應用程序的用戶嘗試登錄而不是向他的應用程序提供他使用他的Facebook帳戶登錄的憑據時。
我不明白爲什麼應用程序信任用戶?所有的應用程序知道,該用戶是從Facebook的信任,因爲他有一個帳戶。我們怎麼能相信用戶應該真的訪問應用程序?我們爲什麼要信任通過例如身份驗證的人Facebook的?

+0

爲什麼關閉?我能改善這個問題嗎? – Jim

+0

「相信他們」關於_什麼,確切地說? _「所有的應用程序都知道,用戶從Facebook獲得信任,因爲他在那裏有一個帳戶。我們如何才能相信用戶應該真正訪問應用程序?「_ - _you_決定是否擁有Facebook帳戶足以訪問您的應用程序。 – CBroe

+0

您是否從Facebook獲得該用戶的唯一標識符?所以,當她第二天回來時,你知道這是同一個人嗎?您需要從身份驗證服務獲得更多什麼? – Thilo

回答

1

在這種情況下,您提供服務的「用戶」是Facebook/Google/Instagram /等。帳戶。從你的角度來看,你並不關心輸入憑據的人是誰。

通常情況下,您只知道登錄到您的應用的用戶知道該帳戶的用戶名和密碼。在外部驗證案例中,您知道該用戶具有fb/google/inst的特定登錄信息,並知道與其關聯的密碼。

請注意,在大多數情況下(本地或外部驗證),您不知道與帳戶相關的人(除非您有一些個人驗證方法,例如信用卡或發送傳統信函一些認證)。你所知道的是,登錄的人知道憑證。

從技術上講,這些帳戶(fb,google,inst)中的每一個都是一個單獨的「用戶」,而您的本地憑證登錄是不同的帳戶。

整個概念是關於真正的用戶便利性,再加上一些額外的好處,比如讓用戶數據由其他人存儲和維護,額外的安全性等等。

這就是說,它仍然是,如果你堅持到「本地」憑據方法完全沒事,只是確保它是安全的:-)


編輯:

一個簡單的例子:

你的應用程序有兩個登錄選項 - 一個簡單的登錄密碼和登錄谷歌。 您也有一位用戶John Smith。

John打開您的應用程序,該程序需要登錄並且每個帳戶都有一些敏感數據。

情景1。 John選擇標準的「本地」登錄選項並使用其憑據JohnSmith1111和密碼12345登錄。John現在能夠顯示與帳戶JohnSmith1111相關的數據。

情景2。 John選擇使用Google登錄。他被重定向到登錄頁面,在那裏進行身份驗證並返回到您的應用。您的應用會收到通知,說明用戶google_john_smith已成功通過身份驗證。 John現在可以顯示與帳戶google_john_smith關聯的數據。

問題是使用這些登錄選項驗證的帳戶是不一樣的!這裏沒有「信任」問題。

+0

因此,如果我有一個訪問「我的服務器」和「服務」的應用程序,我通常會有一個用戶名/密碼登錄到他們,如果直接訪問,例如。通過瀏覽器。但是,如果我委託認證,例如到FB我仍然不知道用戶是誰?所以也許這種方案適用於特定情況? – Jim

+0

同樣,這一切都歸結爲您是否真的需要(並且可以)知道用戶是誰:-)請記住,此外部身份驗證不是登錄相同用戶帳戶的替代方法。你應該把它作爲一個單獨的用戶帳戶:-) – Kelevandos

+0

我不知道我跟着你。爲什麼我不需要知道用戶是誰?這是認證的關鍵點嗎?如果他訪問的服務器有「敏感」數據會怎麼樣? – Jim

相關問題