2010-11-10 43 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提供程序验证用户凭证后,您仍然会将用户登录到系统中,因此您可以从自己的系统处理其注销状态。