有没有办法使用 Openvpn 或wireguard 设置 oAuth?

Sof*_*cks 5 vpn single-sign-on token oauth

我正在寻求构建一组需要单点登录的服务。基本上,您登录到我的 oAuth 提供商,并且可以访问 openvpn 连接(或wireguard)和网站,无需额外的安全性,原始设置可能除外。

因此,我的问题是:如何自动化 openVpn 以便我可以执行以下两件事之一:

  1. 使用令牌而不是密码/用户名验证我的连接

或者

  1. 使用用户名/密码验证我的连接,然后我可以将其发送到我的 oAuth 提供商并向客户端返回令牌,以供其他应用程序使用

Nik*_*nov 2

阅读man openvpn。它是有关 OpenVPN 的权威信息来源。

让我复制粘贴该页面的一部分。我认为这应该完全回答你的问题:

--auth-token代币

这不是直接在任何配置文件中使用的选项,而是从 --client-connect脚本或--plugin挂钩到 OPENVPN_PLUGIN_CLIENT_CONNECTOPENVPN_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.