我正在寻找构建一组需要单点登录的服务。基本上,您登录我的 oAuth 提供商,即可访问 openvpn 连接(或 wireguard)和网站,无需额外的安全措施,但可能需要进行原始设置。
因此,我的问题是:如何自动化 openVpn,以便我可以执行以下两项操作之一:
- 使用令牌而不是密码/用户名来验证我的连接
或者
- 使用用户名/密码验证我的连接,然后我可以将其发送给我的 oAuth 提供商,并向客户端返回一个令牌,供其他应用程序使用
答案1
读人 openvpn。它是有关 OpenVPN 的权威信息来源。
让我复制粘贴该页面的一部分。我认为这应该完全回答你的问题:
--auth-token
令牌这不是在任何配置文件中直接使用的选项,而是从
--client-connect
脚本或--plugin
挂接到OPENVPN_PLUGIN_CLIENT_CONNECT
或OPENVPN_PLUGIN_CLIENT_CONNECT_V2
调用的脚本中推送此选项。此选项提供了在 OpenVPN 客户端的生命周期内用身份验证令牌替换客户端密码的可能性。每当重新协商连接并触发
--auth-user-pass-verify
脚本或--plugin
使用钩子时OPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY
,它都会将此令牌作为密码传递,而不是用户提供的密码。身份验证令牌只能通过完全重新连接来重置,服务器可以向客户端推送新选项。一旦设置了身份验证令牌,用户输入的密码就永远不会被保留。如果 OpenVPN 服务器端拒绝身份验证令牌,客户端将收到并AUTH_FAIL
断开连接。这样做的目的是启用双因素身份验证方法(例如 HOTP 或 TOTP),而无需在每次重新协商连接时检索新的 OTP 代码。另一个用例是在客户端上缓存身份验证数据,而无需在会话生命周期内将用户密码缓存在内存中。
要使用此功能,
--client-connect
脚本或--plugin
需要放置
push "auth-token UNIQUE_TOKEN_VALUE"
进入动态配置数据的文件/缓冲区。这将使 OpenVPN 服务器将此值推送到客户端,客户端将本地密码替换为
UNIQUE_TOKEN_VALUE
。
答案2
我在搜索 WireGuard 的类似单点登录要求时遇到了一些参考资料。我将它们列在下面。
- https://github.com/subspacecloud/subspace
- https://pritunl.com/(支持 WireGuard 和 OpenVPN)
答案3
取决于你使用的提供商,但有一个开源的 WireGuard VPN(https://github.com/firezone/firezone) 支持任何具有 OIDC 连接器的 SSO 提供商。