2009-07-20 107 views
6

我目前正在辯論是否應該爲我的某個網站使用OpenID登錄。 OpenID對我來說可能比較難實現,因爲我已經編寫了註冊和登錄代碼,但這只是時間考慮。與傳統的網站用戶帳戶系統相比,使用OpenID有哪些優點和缺點。使用OpenID的優點和缺點是什麼?

回答

5

優勢

你有一個單點登錄這實際上是很酷,特別是在這裏和那裏有很多賬戶的人。

openid服務器提供了有關用戶的基本信息,每次都可以記錄通常的基本信息。從這個意義上說,您可以將麻煩保存到您的用戶。

它很好地增強了傳統的用戶/傳遞機制。有許多網站同時提供兩個系統。

將誠信的信任從多方移到只有一方。目前,我不知道我註冊的任何網站是否以明文形式存儲了我的密碼,以竊取密碼並嘗試在其他網站上使用密碼,前提是我擁有​​相同的密碼。

委派的技術優勢。你不會被迫使用同一個提供者。你可以切換。

缺點

您還必須對那些誰不明白的新範式提供用戶名/密碼或他們沒有一個OpenID(也許他們有它,但他們不知道) 。如果它是你想要解決的廣泛的人,那麼你可以把它們嚇跑。

此外,我不會用它來認真對待任何事情。我不相信我的銀行要求我用我的openid登錄,而且還有很多電子商務網站。不重要的事情可以。

openid提供商可以跟蹤用戶的習慣,因爲他們收到所有的認證請求。這就是我部署個人提供商的原因。

最後,據我所見,許多openid服務器以明文形式移動密碼,但這是我的理解,我可能是錯的。我部署了我自己的openid提供商,並且我花了很大功夫,以便通過https傳輸密碼,即使我的openid被標記爲http

1

我看到的主要優勢,儘管不一定適用於您的情況希望保留現有的系統,是我不必擔心存儲密碼。

太多人對所有的東西都使用相同的密碼(或一小組密碼),所以如果我的網站被泄露了(我希望我足夠熟練以防止這種情況發生,但安全性是一個多層野獸,所以任何增加額外安全性的東西在我的書中都是很好的),那麼攻擊者就無法獲得密碼。

對於用戶,他們現在可以合法地擁有一切的密碼。他們使用他們信任的OpenID提供商,而不必信任任何湯姆迪克或在互聯網上通過網站哈利。

1

以SO爲例,它支持兩者。我使用我的Google帳戶通過OpenID登錄,但我仍然需要一個帳戶/用戶名來鏈接到我的OpenID。我假設您只允許通過OpenID登錄,但不允許您的用戶使用您的網站作爲OpenID服務器登錄。

所以清理一下;您可以使用大量的登錄/註銷代碼,您將需要它,因爲唯一的區別是您通過第三方而不是您自己的數據庫進行身份驗證。在僞代碼想象:

authenticate_from_db(String username, String password) 
{ 
     fetch username and password where username = username 
     if username = username and password = hash_of(password) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
} 

authenticate_from_openid(String openId_provider) 
{ 
    provider = contact_openID_provider(openID_provider) 
    if(provider) 
    { 
     login.username = map(returned_user, your_db) 
     return true 
    } 
    else 
    { 
     return false; 
    } 
} 

所以你看,主要是認證過程改變,而你自己的仍然使用。

的優點是相當清楚的:

  • 允許用戶通過自己的OpenID提供商的現有帳戶登錄。

    • 敵對的OpenID提供商(?垃圾郵件)驗證自己的反垃圾郵件插件等
    • 其他安全:
    • 現有用戶可以通過自己的OpenID提供商

    缺點是(我能想象)任選登錄通過允許第三方驗證您的用戶的擔憂


我想強調,支持OpenID不應該改變任何東西爲您的現有用戶。

OpenID用戶仍然需要有一個帳戶,他們只是通過第三方進行身份驗證。

+0

的確,OpenID形成了認證元素(他們是誰)。您的應用程序中的用戶帳戶定義了授權元素(他們可以做什麼)。 – 2009-07-20 01:33:07

相關問題