Bitwarden 是一款出色的密码管理工具。它拥有适用于每个平台的应用程序、浏览器插件和自托管版本,并提供一些很棒的密码管理技巧,如文件夹和集合。我最喜欢的功能之一是它会保留您的旧密码历史记录,这对于企业用户来说是一个很棒的功能。
如果您是企业用户,您可能正在自托管 Bitwarden,并希望将您的用户与员工目录同步。我的组织使用 Active Directory (AD),它是用户目录的标准,并与 Windows 桌面无缝集成。我也需要它与我们的开源工具一起工作,本文分享的秘诀就在于此。
允许您执行此操作的工具是 Bitwarden Directory Connector (BWDC)。如果您在 Google 上搜索,您不会找到太多关于在 Linux 上将 BWDC 与 AD 一起使用的信息。Bitwarden 的博客 如果您使用的是 Windows 版本,那么它是一个很好的起点,但它不会帮助您将其集成到 Linux 环境中。您可以在 Bitwarden 的 GitHub 页面上找到执行此操作的说明,但它们不是很清楚。因此,在这里我将解释如何让您的 Linux 自托管版本的 Bitwarden 与您的企业 Active Directory 集成(并且,希望为未来在 Google 上搜索此信息的搜索者提供更有成效的结果)。
在我的设置中,Bitwarden 和 Active Directory 都托管在 AWS 上,前者在 EC2 实例中,后者在 AWS Simple Directory 中。Bitwarden Docker 容器安装在名为 bitwarden 的用户的 home 目录下。Bitwarden 的说明 使此设置变得容易。但是设置 BWDC 并不那么清楚,因此我将尝试在此处修复它。
安装 BWDC
首先为 BWDC 设置一个目录,然后下载 ZIP 文件并解压缩
cd /home/bitwarden
mkdir directory-connector
cd directory-connector
wget https://github.com/bitwarden/directory-connector/releases/download/v2.6.2/bwdc-linux-2.6.2.zip
unzip bwdc-linux-2.6.2.zip
chmod +x bwdc
(在撰写本文时,BWDC 2.6.2 是当前版本;这可能会更改,因此请确保下载最新版本。)
现在您将拥有一个名为 bwdc 的二进制文件和一个名为 keytar.node 的文件;将这两个文件都放在原位。
接下来,编辑 bitwarden 用户的配置文件
vi /home/bitwarden/.profile
并添加以下行
export BITWARDENCLI_CONNECTOR_PLAINTEXT_SECRETS=true
export PATH=$PATH:/home/bitwarden/directory-connector
注销并重新登录以获取新设置,或者您可以使用以下命令 sourcing 配置文件
. ~/.profile
BITWARDENCLI_CONNECTOR_PLAINTEXT_SECRETS=true 行告诉 BWDC 不要使用任何基于桌面的密钥库。由于这是一台服务器,并且不太可能安装桌面,因此您将不得不将密码以纯文本形式保存(但您将采取预防措施稍后对其进行保护)。第二行设置了 bwdc 二进制文件的路径,以便它可以从您所在的任何目录运行。
配置 BWDC
安装 BWDC 后,将其配置为连接到您的 Bitwarden 实例
bwdc login
? Email address: <your email for your master account>
? Master password: [hidden]
登录后,您就可以开始处理 data.json 文件了。
如果您使用上述步骤设置 BWDC,则其配置信息将存储在 /home/bitwarden/.config/Bitwarden Directory Connector/data.json 中。此文件包含 appId 和 access token;这些是您 Bitwarden 实例的登录凭据。但是 Active Directory 呢,您会说?您可以通过编辑 data.json 文件手动添加它(我假设您在服务器上并正在使用 Vi)
vi '/home/bitwarden/.config/Bitwarden Directory Connector/data.json'
在 appId 行下方添加以下内容
"rememberEmail": true,
"rememberedEmail": "<the email address you logged in with>",
"organizationId": "<your organization id>",
"directoryType": 0,
"directoryConfig_0": {
"ssl": false,
"sslAllowUnauthorized": false,
"port": 389,
"currentUser": false,
"ad": true,
"hostname": "<hostname of your active directory>",
"rootPath": "<root path of AD, something like; dc=com,dc=au>",
"username": "<username with privilege to read the AD; DOMAIN\\Username>",
"password": "<password for the above account>"
},
"directoryConfig_2": {},
"directoryConfig_1": {},
"directoryConfig_3": {},
"syncConfig": {
"users": true,
"groups": true,
"interval": 5,
"removeDisabled": true,
"overwriteExisting": true,
"useEmailPrefixSuffix": false,
"creationDateAttribute": "whenCreated",
"revisionDateAttribute": "whenChanged",
"emailPrefixAttribute": "sAMAccountName",
"memberAttribute": "member",
"userObjectClass": "person",
"groupObjectClass": "group",
"userEmailAttribute": "mail",
"groupNameAttribute": "name",
"userFilter": "(&(memberOf=CN=bitwarden,OU=groups,DC=work,DC=corp))",
"groupPath": "OU=Groups",
"userPath": "CN=Users"
},
"environmentUrls": {
"base": "<base url of your bitwarden instance; https://bitwarden.yourdomain>",
"api": null,
"identity": null,
"webVault": null,
"icons": null,
"notifications": null,
"events": null
},
如果您仔细查看,您会发现您需要更改此条目中的几个值,包括 userFilter、groupPath 和 userPath。(我假设您熟悉 LDAP 和 AD,并且知道这些值对于您的实例应该是什么。)保留 CN=bitwarden 部分,用于您稍后将创建的 Bitwarden AD 组。您需要更改的另一个值是 organizationID,您可以在 bwdata 目录中找到它,作为其中一个 JSON 文件的名称。列出文件
ls /home/bitwarden/bwdata/core/licenses/organization
这应该返回一个目录列表,其中包含一个形式为 <organization id>.json 的文件名。文件名本身就是您组织的 ID。将其插入到上面代码中的 organizationID 行中。
一旦您获得正确的 data.json 文件,我强烈建议您备份此文件。如果 BWDC 发现此文件有问题,似乎存在一个将此文件设置回默认设置的问题。这意味着如果您无意中对文件进行了更改并且出现错误,您将丢失整个配置。
接下来,以 bitwarden 用户身份测试与 AD 的连接
bwdc test
这应该返回 AD 中组的转储。为了保护您的密码,请设置该文件的权限,以便只有 bitwarden 用户可以读取它
chmod 700 '/home/bitwarden/.config/Bitwarden Directory Connector/data.json'
设置您的组
现在向您的 AD 添加一个组(我的组名为 bitwarden),您将在其中添加和删除需要访问 Bitwarden 的用户。此组是必要的,因为如果您不根据此组过滤用户,BWDC 将尝试使用您 AD 中的所有用户。如果用户数量大于您的 Bitwarden 许可证允许的数量,BWDC 将静默失败,您会恨自己很长时间……就像我一样!
一旦组设置好并且至少有一个用户,请再次运行测试。您应该在输出中看到您用户的电子邮件地址。
现在是同步的时候了。同步后,bitwarden 组中出现的任何用户都将被添加到 Bitwarden,并且将向他们发送电子邮件,邀请他们注册。以 bitwarden 用户身份工作,使用以下命令同步目录
bwdc sync
鉴于 removeDisabled 在 data.json 文件中设置为 true,您可以设置一个 cron 作业来保持 bitwarden 组的成员和 Bitwarden 用户 постоянно 同步,以便您在 AD 中所做的任何更改都会立即反映在您的 Bitwarden 实例中。将以下内容添加到您的 /etc/crontab
# Sync for Active Directory to Bitwarden
* * * * * bitwarden export BITWARDENCLI_CONNECTOR_PLAINTEXT_SECRETS=true ; /home/bitwarden/directory-connector/bwdc sync >/dev/null 2>&1
一旦您进行了自动同步,您将在 Bitwarden 中拥有所有 AD 组的完整列表。从那里开始,只需将组分配给集合,然后在您的 AD 中向组添加成员即可。用户将自动分配到正确的密码集合,并看到他们需要的密码。
潜在陷阱
最后,我将告诉您一些我在设置此过程时遇到的陷阱。首先,请注意 AD 主组。如果您的任何 Linux 或其他 POSIX 系统从 AD 获取登录凭据,您可能已经为此用户设置了此项。似乎 AD 不会将用户包含在组搜索结果中(如果该组设置为主组);这可能会从组中删除用户,从而失去对集合的访问权限。
其次,当您需要删除用户时,您可能会认为从 AD 中的组中删除帐户会删除用户……错了!似乎 Bitwarden 在其数据库中保留了一些用户信息。当我删除自己的帐户,然后发现重新创建后我无法再登录时,这一点变得非常明显,因为多因素身份验证 (MFA) 仍然处于活动状态,并且令牌已过期,实际上将我锁定在外。您必须明确告知 Bitwarden 删除数据库中的内容。为此,请转到 URL
https://<your bitwarden site>/#/recover-delete
输入用户注册时使用的电子邮件地址。他们将收到一封电子邮件,指示他们单击链接以确认删除帐户。完成后,可以将用户放回 Bitwarden AD 组,然后再次完成注册过程。
现在您知道如何让您的自托管 Bitwarden 与您的 AD 一起工作了。我认为您仍然会遇到一些问题,但是只要有一点耐心并调整配置,它就会工作。一旦它开始工作,就不要过多地摆弄它!
评论已关闭。