大学和学校如何在多个服务之间安全地同步密码?

信息安全 密码 单点登录
2021-08-16 19:14:09

我是一名学生,似乎我去过的每一所学校或大学都有一个密码,您为您的用户帐户设置了一个密码,用于登录大学服务,然后该密码也会同步到大学使用的外部服务,例如黑板、前台、保管箱、Office 365 电子邮件等

网络安全的第一课是不要以纯文本形式存储密码或对其进行加密。而是使用某种散列算法。如果这是真的,大学的 IT 服务如何自动同步所有相关帐户的密码?当请求更改密码时,我可以理解如何通过每次使用 API 更新所有服务来完成此操作,但是如果用户不重新输入密码,就无法采用新服务。

它是如何完成的?还是他们只是以纯文本形式保存密码?

2个回答

通常不会在服务之间“同步”密码,而是使用集中式身份验证服务。在许多情况下,这将是一个运行 Active Directory 服务器(其他存在,例如 FreeIPA)的 Microsoft Windows 域控制器,其他服务可以使用 LDAP 和 Kerberos 与之通信。

典型设置将所有用户帐户添加到目录服务器(出于冗余和可靠性目的,通常在多个服务器之间透明地复制)。本地托管的应用程序(例如 Blackboard)会将目录服务器的 LDAP 信息作为身份验证提供程序输入到服务器设置中。当客户端在 Web 界面上输入其凭据时,应用程序可能会根据本地数据库以及已配置的 LDAP 服务检查凭据。如果 LDAP 服务器确认身份验证成功,则可以检索有关用户的信息(联系信息、组成员资格等)以填充应用程序的某些部分。当用户信息在某处更新时,目录服务器上的数据会发生更改,以便在其他任何地方都可以看到更改。

并非所有应用程序都会直接使用 LDAP;外部服务(例如 Office 365 或 Google Apps 套件等)可能会改用单点登录 (SSO),您可以在其中通过组织的登录页面进行身份验证,并且这些外部服务能够有效地重复使用此身份验证(例如通过 SAML)。

在目录服务器上,密码作为散列存储在每个用户对象中。使用 LDAP 访问控制进一步保护散列(因此任何 LDAP 客户端都不能只提取散列)并使用注册表中的密钥(在 Windows 活动目录的情况下)进行加密。

简而言之,这只是表面现象。有多种方法可以设置网络和服务以使用集中式身份验证。但几乎每个组织都使用某种类型的这种系统。就像您说的那样,在大多数情况下手动操作会非常困难且不安全。

登录外部服务时,如果您的浏览器将您重定向到您的组织以输入密码,则使用联合,即密码不会同步到外部服务。

通常是这种情况,使用的标准通常是 SAML2。

但是有些组织实际上会将您的密码同步到不同的服务,根据我的经验,它通常在不支持 LDAP 身份验证的内部服务之间进行,但我已经看到它也用于外部服务,例如 Office 365 和 Google。

这是由身份管理系统(其中有很多,“IDM”)完成的,该系统具有连接器,可在中央存储库和所有连接的系统之间保持身份信息同步。

在这种情况下,密码是加密存储的,在所有情况下,我都在该中央存储库中使用 AES256 看到过。当然,IDM 系统的管理员可以读取这些密码,因为如果没有审计控制,他们可以控制密钥。