2010-11-10 86 views
6

有人可以幫我理解OpenID是如何工作的嗎?我對以下答案感興趣:OpenID是如何工作的?

  1. 如果使用OpenId,還需要存儲用戶ID和密碼嗎?
  2. 我的應用程序在用戶登錄時如何創建新會話?
  3. 當用戶註銷應用程序時,除清除會話數據外,還需要做其他任何事情嗎?我需要通知openId服務器嗎?

回答

3

我最近做了一個openid認證系統,這是它的工作原理。

登錄:

  1. 用戶將在OpenID網址(不 一定是唯一的),
  2. OpenID提供商驗證和 提供了一個獨特的OpenID網址, 成功。
  3. 將此URL放入會話中。

身份驗證請求:

存在這樣的OpenID網址映射到用戶的表。

爲每個請求:

  1. 查找OpenID網址在
  2. 如果存在會話,查找用戶記錄和 其附加到請求
  3. 處理請求。

你還必須存儲的用戶ID和密碼 如果使用OpenID登錄?

用戶ID是,口令沒有(除非您提供其他方式除了OpenID的登錄)

如何我的應用程序發現和 當有人在登錄 創建一個新的會話?

會話正常處理,會話用於通過身份驗證的用戶和未經身份驗證的用戶。

當我使用日誌我自己出 的應用程序,我需要從我的應用程序做任何事情 不僅僅是清除他們的會話 更多? (我是否需要 告知openId服務器?)

沒有。

3

我的理解是這樣的:

  1. 的OpenID,用戶可以登錄以分散的方式。這意味着用戶的登錄憑據由一個站點處理,供應商

  2. 您的系統將與提供商交互以確定用戶是否是他們自稱的用戶。如果他們通過檢查,您的系統將他們登錄。

  3. 您仍然需要存儲一些用戶信息,因爲他們如何使用您的系統的詳細信息必須存儲在您的系統中。

因此,如果Google是開放式ID提供商,那麼SO可以驗證我是否登錄了Google,是誰,我說我是誰。然後SO說,很好,這個用戶在我們的系統中是hvgotcodes,並且給了我對於我在SO中的人有意義的特權。

在回答關於註銷的具體問題時,是的,在開放id提供程序驗證用戶憑證後,您仍然會將用戶登錄到系統中,因此您可以從自己的系統處理其註銷狀態。