【保姆教程】RuoYi-Radius搭建实现portal认证

一、简介

若依后台管理框架V4.6.0做为基础框架,实现了ToughRADIUS大部分功能,支持标准RADIUS协议(RFC 2865, RFC 2866),提供完整的AAA实现。可运用于酒店WIFI认证公司局域网权限认证商场WIFI认证其它公共场所等等。

二、主要功能

  • 套餐管理
  • 设备管理
  • 用户管理
  • 订单管理
  • 在线管理
  • 微信、支付宝H5支付
  • 实现用户上线请求认证、动态授权、限速、强制下线
  • 实现上网时间到期后自动下线

三、认证流程

四、搭建步骤

系统环境:JDK1.8 ,centos8,mysql5.7

注意:centos7的yum源没有freeradius-rest安装包,安装过程中会带来不少麻烦,建议centos8安装,省不少事情。

1.freeradius安装

yum install freeradius -y

yum install freeradius-rest -y

yum install freeradius-utils -y

至此,我们已安装完成freeradius,下面我们要对freeradius进行配置,支持rest认证

2.freeradius配置

  • 通过软连接方式启动rest模块
ln -s /etc/raddb/mods-available/rest /etc/raddb/mods-enabled/rest
  • 修改/etc/raddb/sites-enabled/default
vim /etc/raddb/sites-enabled/default

分别在authorize,authenticate,accounting3个模块中插入rest配置,如下图所示:


  • 修改/etc/raddb/users
vim /etc/raddb/users

把freeradius的默认认证方式改为rest(DEFAULT Auth-Type := rest)

  • 修改/etc/raddb/mods-enabled/rest

    文件内容如下:

rest {

	tls {
# ca_file = ${certdir}/cacert.pem
# ca_path = ${certdir}
# certificate_file = /path/to/radius.crt
# private_key_file = /path/to/radius.key
# private_key_password = "supersecret"
# random_file = /dev/urandom
# check_cert = yes
# check_cert_cn = yes
} connect_uri = "http://127.0.0.1:8090"
connect_timeout = 5.0 authorize {
uri = "${..connect_uri}/api/freeradius/authorize"
method = 'post'
body = 'post'
data = "username=%{urlquote:%{User-Name}}&nasip=%{urlquote:%{NAS-IP-Address}}&nasid=%{urlquote:%{NAS-Identifier}}"
} authenticate {
uri = "${..connect_uri}/api/freeradius/authenticate"
method = 'post'
body = 'post'
data = "username=%{urlquote:%{User-Name}}&nasip=%{urlquote:%{NAS-IP-Address}}&nasid=%{urlquote:%{NAS-Identifier}}"
} accounting {
uri = "${..connect_uri}/api/freeradius/accounting"
method = 'post'
body = 'post'
data = "username=%{urlquote:%{User-Name}}&nasip=%{urlquote:%{NAS-IP-Address}}&nasid=%{urlquote:%{NAS-Identifier}}\
&acctSessionId=%{urlquote:%{Acct-Session-Id}}&macAddr=%{urlquote:%{Calling-Station-Id}}&acctSessionTime=%{urlquote:%{Acct-Session-Time}}\
&acctInputOctets=%{urlquote:%{Acct-Input-Octets}}&acctOutputOctets=%{urlquote:%{Acct-Output-Octets}}\
&acctInputGigawords=%{urlquote:%{Acct-Input-Gigawords}}&acctOutputGigawords=%{urlquote:%{Acct-Output-Gigawords}}\
&acctInputPackets=%{urlquote:%{Acct-Input-Packets}}&acctOutputPackets=%{urlquote:%{Acct-Output-Packets}}\
&nasPortId=%{urlquote:%{NAS-Port-Id}}&framedIPAddress=%{urlquote:%{Framed-IP-Address}}\
&sessionTimeout=%{urlquote:%{Session-Timeout}}&framedIPNetmask=%{urlquote:%{Framed-IP-Netmask}}\
&acctStatusType=%{urlquote:%{Acct-Status-Type}}"
} post-auth {
uri = "${..connect_uri}/api/freeradius/postauth"
method = 'post'
body = 'post'
} pool {
start = ${thread[pool].start_servers}
min = ${thread[pool].min_spare_servers}
max = ${thread[pool].max_servers}
spare = ${thread[pool].max_spare_servers}
uses = 0
retry_delay = 30
lifetime = 0
idle_timeout = 60
}
}
  • 修改/etc/raddb/clients.conf
vim /etc/raddb/clients.conf
改成自己的ip

cd /etc/raddb/certs/
./bootstrap

到这里我们对freeradius的配置也就完成了,下面我们安装nuoyi-radius。

3.ruoyi-radius安装

  1. 下载源码

gitee:https://gitee.com/panweilei/ruoyi-radius.git

  1. 初始化数据库

执行ruoyiradius-init.sql



  1. 修改radius-application.properties,避免和freeradius端口冲突
org.toughradius.authport=${RADIUSD_AUTH_PORT:2812}
org.toughradius.acctport=${RADIUSD_ACCT_PORT:2813} 修改为false
org.toughradius.portal.portalEnabled=${PORTAL_ENABLED:false}
  1. 创建/opt/server/ruoyiradius/logs

在主机上创建日志输出目录

  1. 启动ruoyi-radius

maven打包,修改ry.sh(Appname的修改,jar路径的修改)

启动项目 ./ry.sh start

4.调试&验证

  1. 调试模式启动freeradius
radiusd -X

  1. 启动(AC模拟器)ACUDP.jar

    jar包下载:http://150.158.153.233:9876/ACUDP.jar

    源码下载:私信我发你邮箱

./acudp.sh

  1. 打开管理后台:http://127.0.0.1:8090/
  2. 添加设备

3.添加用户

  1. 测试打断登录

    浏览器输入:http://127.0.0.1:8090/wlandemo,页面将出现以下内容,然后按部就班的操作就行,可以观察后台freeradius日志和ruoyi-radius日志的输出情况.





【保姆教程】RuoYi-Radius搭建实现portal认证的更多相关文章

  1. 渗透测试思路 | Linux下自动化搭建FakeAP,劫持用户在Portal认证下的所有流量

    如何在linux下搭建一个fakeap,使得portal认证下的用户无法发现连接你的假AP,并且能够正常上网.先说一下portal认证.无线WIFI认证方式主要有wpa2 和 open两种,而port ...

  2. Windows Server 搭建企业无线认证(Radius认证方案)

    认证协议介绍: 扩展认证协议EAP(Extensible Authentication Protocol) 是一个在无线网络或点对点连线中普遍使用的认证框架.它被定义在RFC 3748中,并且使RFC ...

  3. 保姆教程系列一、Linux搭建Nacos

    前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 简介: Nacos是阿里巴巴开源的一款支持服务注册与发现,配置管理以及微服务管理的组件.用来取代以前常用的注册中心(zookeeper ...

  4. OpenWRT下实现Portal认证(WEB认证)

    首先简单介绍一下什么是Portal认证,Portal认证,通常也会叫Web认证,未认证用户上网时,设备强制用户登录到特定站点,用户可以免费访问其中的服务.当用户需要使用互联网中的其它信息时,必须在门户 ...

  5. 保姆教程系列二、Nacos实现注册中心

    前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 上篇我们介绍到  保姆教程系列一.Linux搭建Nacos 注册中心原理 一.环境准备 Java版本:1.8+   (Linux ce ...

  6. Owin中间件搭建OAuth2.0认证授权服务体会

    继两篇转载的Owin搭建OAuth 2.0的文章,使用Owin中间件搭建OAuth2.0认证授权服务器和理解OAuth 2.0之后,我想把最近整理的资料做一下总结. 前两篇主要是介绍概念和一个基本的D ...

  7. 使用Owin中间件搭建OAuth2.0认证授权服务器

    前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...

  8. Radius 远程用户拨号认证系统

    RADIUS 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . RADIUS:Remote Authentication Dial In User Service,远程用户拨号认证系 ...

  9. 拿nodejs快速搭建简单Oauth认证和restful API server攻略

    拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ...

随机推荐

  1. 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目入口与路由EP01

    书接上回,我们已经安装好Iris框架,并且构建好了Iris项目,同时配置了fresh自动监控项目的实时编译,万事俱备,只欠东风,彩虹女神蓄势待发.现在我们来看看Iris的基础功能,如何编写项目入口文件 ...

  2. 【AGC】集成华为AGC崩溃服务实用教程

    ​简介 AppGallery Connect(简称AGC)崩溃服务提供了轻量级崩溃分析服务,集成Crash SDK,可以实现零代码快速集成,您的应用能够在崩溃时自动收集崩溃报告,帮助您了解应用版本质量 ...

  3. Excel 名称管理器是什么,并实现一个级联选择框

    名称 在 Excel 中,每一个单元格都有自己的名称.表格横向是字母,纵向是数字,组合起来就是一个单元格的名称. A13 所代表的是 A 列,13 行的单元格.把一组单元格组合起来,加上一个名称,在 ...

  4. Linux 基于源码安装 Redis

    1.下载 Redis: 前往 Redis 官网复制 Redis 相应版本的下载链接,到终端下载 2. 进入到指定目录, 下载 redis.tar.gz 包,运行 wget + 复制的下载链接  例如: ...

  5. Mac设置外网访问本地项目

    > 官网地址:https://ngrok.com/download 步骤(官网基本已经说明了步骤,但还不完善,以下为亲测步骤): 下载并注册账号 打开终端,进入ngrok.zip所在文件夹(方法 ...

  6. 持久化-Powershell配置文件持久性

    持久化-Powershell配置文件持久性 概述 可以使用Powershell配置文件进行持久性和/或特权升级. 执行 获取可以滥用的powershell配置文件,这取决于你拥有的权限. $PROFI ...

  7. Linus命令

    参考: https://blog.csdn.net/weixin_44191814/article/details/120091363 vim编辑器 ## Vim基本模式 [对文件进行操作]vim 文 ...

  8. 简单创建一个SpringCloud2021.0.3项目(二)

    目录 1. 项目说明 1. 版本 2. 用到组件 3. 功能 2. 上一篇教程 3. 创建公共模块Common 4. 网关Gateway 1. 创建Security 2. Security登陆配置 3 ...

  9. django_day02

    django_day02 外键 表示一对多 多对一 class Book(models.Model): name = models.CharField(max_length=32) publisher ...

  10. 第八十四篇:Vue购物车(五) 商品数量的增减

    好家伙, 1.商品数量的增减 我们把商品的数量增减独立出来,写成一个独立的组件Counter <template> <div class="number-container ...