Database 什么';s a";“单点登录”;表用于,为什么需要此列列表?

Database 什么';s a";“单点登录”;表用于,为什么需要此列列表?,database,single-sign-on,Database,Single Sign On,我正在查看一个模式,并试图找出这个表可以用于什么: CREATE TABLE "single_sign_ons" "token" VARCHAR(64) NOT NULL, "ip" VARCHAR(32) NOT NULL, "expired_at" DATETIME NOT NULL, "one_time" VARCHAR(64), "created_at" DATETIME, "updated_at" DATETIME, "user_id" INTEGER, PRIMARY

我正在查看一个模式,并试图找出这个表可以用于什么:

CREATE TABLE "single_sign_ons" 
"token" VARCHAR(64) NOT NULL, 
"ip" VARCHAR(32) NOT NULL, 
"expired_at" DATETIME NOT NULL, 
"one_time" VARCHAR(64), 
"created_at" DATETIME, 
"updated_at" DATETIME, 
"user_id" INTEGER, 
PRIMARY KEY("token"));

什么是“单点登录”以及为什么本表的作者为此包括这些列?

单点登录是一种网站身份验证技术。它允许您登录到一个位置,并通过让站点检查身份验证服务器以查看此人是否已登录,从而实现自动身份验证。它用标记跟踪这一点。它的行为有点像Kerberos对本地登录所做的


为了澄清这一点,它使您不必在多个服务中保持登录和维护单独的帐户

它看起来像是一个身份验证存储,用于确定登录到一系列系统的用户。我的猜测是,各种应用程序都会查看此表,以查看某个ip地址的用户是否已通过身份验证。如果此人有,则允许他们进入应用程序,而无需输入用户名和密码

以下是有关该主题的维基百科链接:

从角度来看,也常用于此。

“单点登录”允许用户进行一次身份验证,并对多个应用程序使用相同的身份验证令牌

例如,如果你登录到Gmail,然后进入谷歌日历,你就不需要再次登录

通常,它依赖于由您登录的第一个应用程序创建的某种身份验证令牌(或者更确切地说,是系统的一部分,由第一个应用程序调用的某种安全服务)。然后可以将令牌呈现给其他应用程序


它在特定系统中的具体工作方式将取决于系统的其他各个方面,但这些信息应足以帮助您理解该表的基本用途。

它是用户登录会话的持有者。我相信,当用户已登录以验证其会话是否仍处于活动状态,并允许他们访问不同的服务器/站点而无需再次登录时,将使用该表

我假设在第一次登录时,用户的会话是新的,因此将查询用户的凭据。然后在此表中输入一行,其中包含用户id、ip地址、创建日期和令牌。然后,该令牌将附加到用户的会话,并在后续登录中使用

其他进程随后将接收令牌作为通信的一部分,并检查此表以确保会话仍然有效。每次检查会话时,更新字段都会更改,以便知道用户处于活动状态


还有更多的逻辑将定期检查表,并使最近更新不够的任何会话行过期。不管这个系统有什么“足够”。然后,带有令牌的子序列访问请求将注册过期,查询凭据并使用新令牌建立新行。

SSO不仅仅适用于网站。当我登录到Windows PC时,我的凭据可以保留,并允许我访问其他资源,如网络文件共享和SQL Server数据库。我也可以称之为SSO。你是对的。单点登录是一个通用术语,但我只在Web环境中讨论过它。事实上,我不需要登录SQL server,这只是我忘记的“魔法”,而在我自己的Web应用程序中使用SSO会让我心痛不已,而且永远不会远离我的想法。我不知道为什么会有IP地址?您可以从一个IP地址登录,穿过街道喝咖啡,然后继续会话(假设咖啡店有不同的IP)。然而,也许它首先是为了防止这种情况发生:)