ownCloud的双因素身份验证

本教程将介绍如何使用privacyIDEA来管理第二个身份验证因素来保护ownCloud登录和双因素身份验证。


启发您自己的云使用两个因素进行身份验证
由arnobabotte @pixabay

在本教程中,我将向您介绍如何使用privacyIDEA保护自己的Cloud安装,您可以使用它来管理用户的第二个身份验证因素。

ownCloud是一种系统,用于存储您自己或您公司的数据,而不是在别人的计算机(也称为“云”)上,而在您自己的计算机上可以控制。 privacyIDEA是一种用于管理身份验证设备的系统,用于您自己的网络中的两个身份验证,而不是任何身份提供者,从而保持您的身份和用户身份也受到您的控制。

如果你想知道,这将是什么样子,你可以在YouTube上仔细观看这个视频

先决条件

我假设你已经有一个ownCloud 8系统并运行。 那里有一些很好的例子。 你也可以看一下在本网站上如何安装ownCloud 8和nginx

另外我假设你正在运行一个privacyIDEA系统。 这个方法不包括privacyIDEA的安装。 您还可以在Howtoforge中找到如何在CentOS安装privacyIDEA,也可以使用文档中的安装说明

请注意:您不需要在同一台服务器上运行privacyIDEA和ownCloud。 在一个服务器上安装privacyIDEA作为身份验证系统,并根据此privacyIDEA配置其他应用程序(如ownCloud),您将释放此类设置的全部功能。 这还包括您不需要管理ownCloud的身份验证设备,您的第二个应用程序的身份验证设备和第三个应用程序的身份验证设备等优点。 你会看到,如果你有几个应用程序和两个以上的用户,这个解决方案证明了它的优势。 但当然也可以在较小的情况下工作。

请注意: ownCloud privacyIDEA应用程序处于早期开发阶段。 所以您提供的任何反馈都非常感谢,并将有助于改进此工具。 您可以通过github问题或通过Google群组来提供反馈意见。

将privacyIDEA连接到ownCloud数据库

准备数据库

privacyIDEA有一个条件。 自己的Cloud用户必须以privacyIDEA或其他方式知道,您在privacyIDEA中分配令牌的用户也必须在ownCloud中可用。

您可以运行用户位于LDAP目录中的安装程序,但在本示例中,我们仅使用现有的ownCloud SQL用户表。

请注意:如果您在不同的服务器上运行privacyIDEA和ownCloud,则需要授予对SQL数据库的访问权限。 在MySQL / MariaDB的情况下,您需要修改/etc/mysql/my.cnf中绑定地址 ,如下所示:

bind-address = 0.0.0.0

此外,您需要根据MySQL添加访问权限:

grant all privileges on owncloud.* to "ocuser"@"privacyIDEA-Server" identified by "password";

现在,MySQL用户“ocuser”可以从privacyIDEA服务器访问ownCloud服务器上的数据库。

警告:到MySQL服务器的网络流量未加密。 如果您运行此方案,我们非常建议您设置TLS。 您还可以在本网站上找到一些使用SSL设置MySQL的howtos。

将privacyIDEA连接到ownCloud

创建用户解析器

现在我们将privacyIDEA连接到ownCloud,以便privacyIDEA知道用户。 我们在Config→Users创建一个新的用户解析器

您可以点击ownCloud应该预设数据库属性映射中所有必需字段的按钮。

然后,您可以单击测试SQL解析器来查看,如果一切顺利。

创建领域

现在您可以通过Config→Realms从解析器创建默认域。

您现在应该在“ 用户 ”选项卡中查看ownCloud用户,并可以为这些用户注册令牌。

注册Google Authenticator

privacyIDEA支持各种令牌,您可以在这里找到。

我们将以简单的例子快速注册Google Authenticator。

转到用户视图,选择一个用户来查看用户的详细信息。 在这里您可以点击按钮注册新令牌

在注册对话框中,您可以选择令牌类型,并根据输入不同详细信息所需的令牌类型。 但是在这个例子中,我们使用默认的token类型HOTP 。 在页面的底部,您可以输入OTP PIN。

单击注册令牌

该令牌已注册,您会看到一个QR码,您可以使用Google Authenticator App进行扫描。

其他令牌类型以其他方式注册,这超出了本教程的范围。 有关更多信息,请参阅privacyIDEA文档

现在我们完成了,因为ownCloud用户分配了一个令牌。 您可以重复此过程,以进一步为自己的Cloud用户。

获取ownCloud应用程序

首先,您需要下载ownCloud privacyIDEA应用程序。

您可以在这里下载App。 您需要将目录user_privacyidea 复制到您自己的Cloud目录apps / 。 假设你把ownCloud安装到/ var / www / owncloud ,这样你就可以得到一个结构了

root@owncloud:~# ls /var/www/owncloud/apps/user_privacyidea/ -l
-rw-rw-r-- 1 root root 1671 Jun 25 15:05 adminSettings.php
drwxrwxr-x 2 root root 4096 Jun 25 15:17 appinfo
drwxrwxr-x 2 root root 4096 Jun 25 15:17 img
drwxrwxr-x 2 root root 4096 Jun 25 15:17 js
drwxrwxr-x 2 root root 4096 Jun 25 15:17 lib
drwxrwxr-x 2 root root 4096 Jun 25 15:17 templates

privacyIDEA应用程序实现为ownCloud用户后端,并将作为现有用户后台的覆盖图,以便能够跳转到身份验证请求,以将第二个因素添加到登录。

配置ownCloud App

转到应用程序→不启用并启用应用程序。

然后,您可以访问您的用户→管理员来配置privacyIDEA应用程序。

您需要提供privacyIDEA服务器的URL 。 您应该运行带有受信任证书的privacyIDEA服务器。 如果在安装过程中没有可信任的证书,可以取消选中VerifyID SSL服务器的SSL证书

为了避免锁定您,您可以勾选复选框, 还允许用户使用其正常密码进行身份验证 。 在这种情况下,如果对privacyIDEA的身份验证失败,则用户将针对底层的ownCloud用户后端进行身份验证。 在生产性使用中,您应该取消选中此复选框。

桌面客户端当然会出现一次性密码问题。 如果您使用这样的客户端,您应该勾选允许使用静态密码访问remote.php的API 。 在这种情况下,来自桌面客户端(由remote.php标识)的身份验证请求将不会针对privacyIDEA而是针对底层用户后端进行身份验证。

最后,如果一切正常,您可以通过勾选“ 使用privacyIDEA ”复选框来激活双因素身份验证。

登录到ownCloud

激活privacyIDEA应用程序后,ownCloud的登录屏幕不会更改。

要登录,您需要输入用户名,并在密码字段中输入您的Google身份验证器生成的OTP密码和OTP值。