Openvpn Uses Casdoor As a Centralized Authentication Tool

Openvpn Uses Casdoor As a Centralized Authentication Tool

我们在配置openvpn集成casdoor的过程中,使用了开源的插件openvpn-auth-oauth2,并帮助我们解决了部分问题,在此特别鸣谢作者@**jkroepke - Overview

  1. 简介

功能:实现openvpn使用casdoor作为集中认证工具,并集成企业微信作为提供商。

目标群体:公司或社会组织

使用场景:公司或组织内部加密

  1. 安装和配置

步骤1:配置企业微信后台创建应用Casdoor
  1. 登录企业微信后台填写应用信息

在「企业微信-应用管理-应用」页面,点击创建应用。

例:

应用logo:自定义

应用名称:Casdoor

应用介绍:选填

可见范围:根据实际情况配置

在「应用Casdoor」页面详情,配置网页授权及JS-SDK、企业微信授权登录

可信域名为Casdoor域名

编辑授权回调域为Casdoor域名

配置应用主页:点击“企业微信管理后台”进入【应用管理】 > 【应用详情】,将Casdoor系统提供的「应用主页」复制并粘贴到自建应用的 “应用主页”,如下图所示。

更多配置请参考SaaS公有云版集成企业微信(自建应用) | ONES Wiki

步骤2:配置Casdoor创建企业微信的Providers
  1. 登录Casdoor系统,创建Providers【WeCom】

在「Casdoor-Identity-Providers」页面,Add a WeCom Providers。

Client ID: 可见「企业微信-我的企业-企业ID」

Client secret: 「企业微信-应用管理-Casdoor-Secret」查看获取

Agent ID:「企业微信-应用管理-Casdoor-AgentId」查看

步骤3:配置Casdoor创建Openvpn的Applications
  1. 登录Casdoor系统,创建Applications【Openvpn】

在「Casdoor-Identity-Applications」页面,Add a openvpn Applications。

Client ID:默认创建,在下文openvpn-auth-oauth2插件中配置

Client secret:默认创建,后续在openvpn-auth-oauth2插件中配置

Redirect URLs:http://<openvpn-auth-oauth2_ip>:9000/oauth2/callback

配置下文openvpn-auth-oauth2的地址

Providers:添加上文创建的[WeCom]

步骤4:安装测试openvpn@server&openvpn-auth-oauth2

版本

OS:Ubuntu 22.04

OpenVPN: 2.6.8

openvpn-auth-oauth2:dev

Golang:1.21.5

  1. 安装openvpn@server请参考Ubuntu 搭建OpenVPN服务器_ubuntu vpn-CSDN博客**

2、安装openvpn-auth-oauth2

参考链接

Installation · jkroepke/openvpn-auth-oauth2 Wiki (github.com)

Configuration

这里我使用的编译安装,作者已将最新分支合并。

1 root@localhost:~# git clone https://github.com/jkroepke/openvpn-auth-oauth2.git
1 root@localhost:~# cd openvpn-auth-oauth2
1 root@localhost:~/openvpn-auth-oauth2# make build
1 root@localhost:~/openvpn-auth-oauth2# chmod +x openvpn-auth-oauth2
1 root@localhost:~/openvpn-auth-oauth2# cp openvpn-auth-oauth2 /usr/bin/
1 #修改openvpn配置以集成openvpn-auth-oauth2
1 root@localhost:~# cat /etc/openvpn/server.conf
1 ···
1 #添加如下配置
1 management /run/openvpn/server.sock unix /etc/openvpn/password.txt
1 management-hold
1 management-client-auth
1 ···
1 #创建一个随机pass以连接openvpn-auth-oauth2
1 root@localhost:~# echo xxxxxxx > /etc/openvpn/password.txt
1 root@localhost:~# cat /etc/sysconfig/openvpn-auth-oauth2
1 #请根据实际情况配置
1 CONFIG_OPENVPN_ADDR=unix:///run/openvpn/server.sock
1 CONFIG_OAUTH2_ISSUER=https://xx.xx.xx #Casdoor域名
1 CONFIG_OAUTH2_CLIENT_ID=35xxxxxxxxxxx22 #上文Casdoor创建的Application
1 CONFIG_OAUTH2_CLIENT_SECRET=28xxxxxxxxxxxxxxxxx281 #上文Casdoor创建的Application
1 CONFIG_HTTP_LISTEN=:9000 #openvpn-auth-oauth2 :port
1 # Define a random value with 16 or 24 characters
1 CONFIG_HTTP_SECRET=1jd93h5b6s82lf03jh5b2hf9 #default or random
1 # Define the public http endpoint here.
1 CONFIG_HTTP_BASEURL=http://xx.xx.xx.xx:9000 #openvpn-auth-oauth2 addr:port
1 CONFIG_OPENVPN_PASSWORD=xxxxxxx #连接openvpn@server的pass
1 root@localhost:~# vim /lib/systemd/system/openvpn-auth-oauth2.service
1 [Unit]
1 Description=OpenVPN authenticator
1 Documentation=https://github.com/jkroepke/openvpn-auth-oauth2
1 Wants=network-online.target openvpn.service
1 After=network-online.target openvpn.service

1 [Service]
1 DynamicUser=true
1 Group=nogroup
1 ExecStart=/usr/bin/openvpn-auth-oauth2
1 EnvironmentFile=/etc/sysconfig/openvpn-auth-oauth2
1 ProtectSystem=strict
1 ProtectHome=true
1 PrivateTmp=true
1 ConfigurationDirectory=openvpn-auth-oauth2
1 ReadWritePaths=-/run/openvpn -/run/openvpn-server
1 # CapabilityBoundingSet=CAP_NET_BIND_SERVICE
1 ExecPaths=/usr/bin/openvpn-auth-oauth2
1 Restart=always
1 RestartSec=5s
1 Restart=on-failure

1 [Install]
1 WantedBy=multi-user.target
1 #到此,我们重启相关服务,注意启动顺序,因为openvpn@server添加了第三方management interface
1 root@localhost:~# systemctl daemon-reload
1 root@localhost:~# systemctl start openvpn-auth-oauth2
1 root@localhost:~# systemctl restart openvpn@server
1 #查看服务状态
1 root@localhost:~# systemctl status openvpn@server
1 ● openvpn@server.service - OpenVPN connection to server
1 Loaded: loaded (/lib/systemd/system/openvpn@.service; enabled-runtime; vendor preset: enabled)
1 Active: active (running) since Wed 2023-12-20 05:46:15 UTC; 2h 51min ago
1 Docs: man:openvpn(8)
1 https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
1 https://community.openvpn.net/openvpn/wiki/HOWTO
1 Main PID: 283876 (openvpn)
1 Status: “Initialization Sequence Completed”
1 Tasks: 1 (limit: 18598)
1 Memory: 2.4M
1 CPU: 422ms
1 CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
1 └─283876 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --s>
1 root@localhost:~# systemctl status openvpn-auth-oauth2
1 ● openvpn-auth-oauth2.service - OpenVPN authenticator
1 Loaded: loaded (/lib/systemd/system/openvpn-auth-oauth2.service; disabled; vendor preset: enabled)
1 Active: active (running) since Wed 2023-12-20 05:46:15 UTC; 2h 51min ago
1 Docs: https://github.com/jkroepke/openvpn-auth-oauth2
1 Main PID: 283879 (openvpn-auth-oa)
1 Tasks: 10 (limit: 18598)
1 Memory: 4.6M
1 CPU: 227ms
1 CGroup: /system.slice/openvpn-auth-oauth2.service
1 └─283879 /usr/local/bin/openvpn-auth-oauth2

3、客户端配置

这里使用windows OpenVPN GUI测试

edit C:\Program Files\OpenVPN\config

client

dev tun

proto tcp

remote <openvpn@server IP> 1194

resolv-retry infinite

nobind

persist-key

persist-tun

auth-user-pass default_pass.txt #这里为避免无效的用户密码弹窗预置一个default_pass.txt,内容随机

ca ca.crt

cert client.crt

key client.key

comp-lzo

verb 3

  1. 连接测试部分截图

到此OpenVPN client连接成功

  1. 技术支持

  2. 常见问题解答

列出可能遇到的问题和解决方案,帮助用户解决常见的错误或问题。

  • 问题一:重启openvpn@server 卡住

问题成因:因为openvpn@server添加了第三方management interface,也就是openvpn-auth-oauth2

解决方案:systemctl stop openvpn-auth-oauth2

systemctl stop openvpn@server

systemctl start openvpn@server

systemctl start openvpn-auth-oauth2 #New terminal to execute

  • 问题二:……

问题成因:……

解决方案:……

  1. 技术成型趣味图

How to use openvpn to connect to casdoor And use Wecom as Casdoor’s provider? · Issue #87 · jkroepke/openvpn-auth-oauth2

  1. 参考文献

SaaS公有云版集成企业微信(自建应用) | ONES Wiki

Ubuntu 搭建OpenVPN服务器_ubuntu vpn-CSDN博客

Installation · jkroepke/openvpn-auth-oauth2 Wiki (github.com)

Configuration

  1. 结语

本技术文档涉及Openvpn、Casdoor、Linux等多个技术领域,如有疑问请联系相关技术人员。
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

医者运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值