OpenID是如何工作的?

6

有人能帮我理解OpenID是如何工作的吗?我对以下问题感兴趣:

  1. 如果使用OpenID,是否仍需要存储用户ID和密码?
  2. 当用户登录时,我的应用程序如何创建新会话?
  3. 当用户从应用程序注销时,除了清除其会话数据外,我需要做其他事情吗?我需要通知OpenID服务器吗?
2个回答

3
我的理解如下:
  1. OpenId允许用户以分散的方式登录。这意味着用户的登录凭据由一个站点(即提供者)处理。

  2. 您的系统将与提供者交互,以确定用户是否是他们所说的人。如果他们通过了检查,您的系统将登录他们。

  3. 您仍然需要存储一些用户信息,因为他们如何使用您的系统的详细信息必须存储在您的系统中。

因此,如果Google是一个OpenId提供者,SO可以验证我是否已登录Google并且我是我所说的人。然后,SO会说:“太棒了,这个用户是我们系统中的hvgotcodes,并为我在SO中的身份授予合适的权限。”

回答您关于注销的具体问题,是的,在OpenId提供程序验证用户凭据后,您仍然要将用户登录到您的系统中,因此您可以从自己的系统中处理他们的注销状态。


3

我最近制作了一个OpenID身份验证系统,以下是它的工作原理。

登录:

  1. 用户输入OpenID URL(不一定是唯一的)
  2. OpenID提供商验证并提供唯一的OpenID URL
  3. 将此URL放入会话中

认证请求:

有一个将OpenID URL映射到用户的表格。

对于每个请求:

  1. 查找会话中的OpenID URL
  2. 如果存在,则查找用户记录并将其附加到请求中
  3. 处理请求

如果使用OpenID,我是否仍然需要存储用户ID和密码?

需要存储用户ID,但无需存储密码(除非您提供除OpenID之外的其他登录方式)。

当有人登录时,我的应用程序如何找出并创建新会话?

会话与普通会话相同,适用于已验证和未经验证的用户。

当我使用自己的应用程序退出登录时,我需要做些什么,除了清除他们在我的应用程序中的会话?(我需要通知OpenID服务器吗?)

不需要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接