如何将 FreeIPA 数据库中的用户帐户引用到 Web 应用程序数据库中的用户帐户

How to reference user account in FreeIPA database to user account in Web app database

我的公司已决定使用 FreeIPA 以便为我们的员工提供 Single Sign On 功能。我完全不熟悉 Kerberos/LDAP 和类似的,因为我以前从未使用过这些技术。

我们有 70 个用户 - 他们有 Windows OS 台机器,SSO 应该用于多个 Python (Django) 网络应用程序、WordPress 网站,可能还有Roundcube 网络电子邮件和 OpenVPN 访问权限。他们根本无权访问 Web 服务器,因此 SSH 帐户对本文并不重要。

我们的 python 网络应用程序的数据库 table 包含与其他一些 table 相关的用户数据,添加每个用户对我们来说非常重要到那些 tables(通过我们的网络应用程序界面),否则我们的应用程序将无法正常工作。 考虑到这一点,我想知道是否有办法以某种方式将用户从 FreeIPA's 数据库引用到我们的网络应用程序和 wordpress 数据库,示例如下:

并非每个用户都可以访问每个网络应用程序,也不是每个用户在这些应用程序中都具有相同的权限。

我们已经在每个网络应用程序中分别定义了用户权限,并且一切正常,所以主要目标只是为我们的用户提供 SSO。我不想为 FreeIPA 系统中的用户组和权限操心,我能避免吗? 当用户获得 Kerberos 票证时,我希望这些网络应用程序能够识别 his/her 帐户,该帐户引用了 FreeIPA 数据库中相应的用户帐户,因此在这些应用程序中具有某些特权。

在这种情况下,很明显我必须将每个新用户添加两次 - 在 FreeIPA 数据库和网络应用程序的数据库中,但这不是问题,我只想 connect/reference 不知何故那些用户帐户。

编辑 Michael Ströder 的回答

如我所见,我必须使用“--uid”命令将每个现有用户手动添加到 FreeIPA,因为 FreeIPA 会自动为每个用户提供这些属性。我同意,我不会为 UID 使用用户名,而只会使用整数。所以,我想像这样 - 我必须 link 每个用户的 uid 号码到应用程序的数据库用户的 table ID 列。比方说,如果 John 的 UID #7 他在 WordPress wp_users table 中也应该有 ID #7,这对我来说很好。我想我可以在我的自定义 python 应用程序中轻松管理它,但我不确定如何在 WordPress 中管理它,是否有一些插件可用于此类事情?我找到了 AuthLDAP,但我不确定这是否是正确的方法?提前致谢

通常的方法是具有唯一且持久的用户名(字符串),通常存储在FreeIPA(或其他)中的属性uid中LDAP 服务器)并将其用作应用程序数据库中的键 table.

请注意 uid 而不是 包含 POSIX-UID(整数),它实际上存储在属性 uidNumber.

我强烈建议 不要 从个人姓名中获取存储在 uid 中的用户名,因为这些经常会发生变化。此外,您永远不应重复使用用户名。

FreeIPA 还具有属性 nsUniqueId,其中包含在创建条目期间生成的 UUID。它在条目的生命周期内不会被修改。如果你想使用它,你必须注意外部身份管理系统不会一直 deleted/re-created 条目。 (其他 LDAP 服务器正在使用标准属性 entryUUID)。