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 風格授權下發布的。請參閱許可證文件。