mokey 是一个为 FreeIPA 提供自助用户帐户管理工具的 Web 应用程序。该项目的动机是实现 FreeIPA 中缺少的自助帐户创建和密码重置功能。 FreeIPA 默认情况下不提供此功能,请参阅此处了解更多信息以及此决定背后的理由。 mokey 不是 FreeIPA 插件,而是使用 FreeIPA JSON API 的完整独立应用程序。 mokey 不需要更改底层 LDAP 架构,并使用 MariaDB 数据库来存储访问令牌。用户体验和 Web 界面可以进行定制,以满足组织外观和感觉的要求。 mokey 是用 Go 编写的,并在修改后的 BSD 许可证下发布。
mokey 应被视为 alpha 软件,使用风险由您自行承担。提供自助密码重置等功能存在固有的安全风险,并且可能使您的系统容易受到滥用。
注意:mokey 需要安装在已注册 FreeIPA 的计算机上。还建议安装 ipa-admintools 软件包。在 FreeIPA 中注册主机超出了本文档的范围。
要安装 mokey,请在此处下载预编译的二进制文件的副本。
tar.gz 存档:
$ tar xvzf mokey-VERSION-linux-x86_64.tar.gz
deb、rpm 包:
$ sudo dpkg -i mokey_VERSION_amd64.deb
$ sudo rpm -ivh mokey-VERSION-amd64.rpm
在 FreeIPA 中创建具有“修改用户和重置密码”权限的用户帐户和角色。 mokey 应用程序将使用此用户帐户来重置用户密码。 “修改用户”权限还需要启用“ipauserauthtype”。运行以下命令(需要安装 ipa-admintools):
$ mkdir /etc/mokey/private
$ kinit adminuser
$ ipa role-add 'Mokey User Manager' --desc='Mokey User management'
$ ipa role-add-privilege 'Mokey User Manager' --privilege='User Administrators'
$ ipa user-add mokeyapp --first Mokey --last App
$ ipa role-add-member 'Mokey User Manager' --users=mokeyapp
$ ipa permission-mod 'System: Modify Users' --includedattrs=ipauserauthtype
$ ipa-getkeytab -s [your.ipa-master.server] -p mokeyapp -k /etc/mokey/private/mokeyapp.keytab
$ chmod 640 /etc/mokey/private/mokeyapp.keytab
$ chgrp mokey /etc/mokey/private/mokeyapp.keytab
编辑 mokey 配置文件并设置 keytab 文件的路径。如果留空, token_secret
和csrf_secret
的值将自动为您生成。如果您希望会话在重新启动后持续存在,请设置这些秘密值。对于其他站点特定的配置选项,请参见此处:
$ vim /etc/mokey/mokey.toml
# Path to keytab file
keytab = "/etc/mokey/private/mokeyapp.keytab"
# Secret key for branca tokens. Must be 32 bytes. To generate run:
# openssl rand -hex 32
token_secret = ""
# CSRF token secret key. Should be a random string
csrf_secret = ""
强烈建议使用 HTTPS 运行 mokey。您需要使用 FreeIPA 的 PKI、自签名或来自商业证书颁发机构的 SSL 证书/私钥。创建 SSL 证书超出了本文档的范围。您还可以在 haproxy 或 Apache/Nginx 后面运行 mokey。
启动mokey服务:
$ systemctl restart mokey
$ systemctl enable mokey
mokey 允许用户添加/删除 ssh 公钥。通过在 /etc/ssh/sshd_config 中添加以下行并重新启动 sshd,可以将在 FreeIPA 中注册的服务器配置为在 LDAP 中让 sshd 查找用户公钥:
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody
mokey 实现了登录/同意流程来处理来自 Hydra 的质询请求。它充当 Hydra 和 FreeIPA 身份提供商之间的桥梁。有关 Hydra 和登录/同意流程的更多信息,请参阅此处。
要配置 Hydra 登录/同意流程,请在/etc/mokey/mokey.toml
中设置以下变量:
[hydra]
admin_url = "http://127.0.0.1:4445"
login_timeout = 86400
fake_tls_termination = true
Hydra 中配置的任何 OAuth 客户端都将使用 FreeIPA 作为身份提供者通过 mokey 进行身份验证。有关 OAuth 2.0/OIDC 客户端应用程序示例,请参阅此处。
首先,您需要 Go v1.21 或更高版本。克隆存储库:
$ git clone https://github.com/ubccr/mokey
$ cd mokey
$ go build .
mokey 是在 BSD 风格许可证下发布的。请参阅许可证文件。