FreeRadius+Rest实现路由认证#
FreeRadius安装#
- 安装freeradius
- 手动关闭freeradius
- 给/etc/freeradius目录权限 后面重启freeradius如果有提示: 就需要执行
- 修改文件/etc/freeradius/3.0/users取消掉以下代码注释,作为测试数据
- 重启freeradius(-X表示调试)
- 开一个新终端进行测试,其中参数分别为用户名、密码、IP和端口、key(key是 /etc/freeradius/3.0/clients.conf中的secret) 客户端预期结果如下 服务端预期结果如下 可以看到验证成功的Access 从上面的服务端输出描述可以得出以下信息 上面是接收到了一个Request,然后radius进行验证,注意,他执行的文件是/etc/freeradius/3.0/sites-enabled/default,其中的authorize模块就是他读取认证配置信息的地方,可以看到这里都是FALSE,说明都失败了,然后他提示User-Name=notfound,说明没找到用户名,随后返回了一个认证拒绝的信息。
FreeRadius支持Rest登录#
- 打开/etc/freeradius/3.0/sites-enabled/default文件
- 建立软链接
- 在/etc/freeradius/3.0/users文件中,配置身份验证类型
- 修改/etc/freeradius/3.0/mods-available/rest
注意上面authorize和authenticate节点中的uri需要替换为龙归的radius服务端插件提供的登录地址
注释掉以下节点的内容 connect_uri preacct accounting post-auth pre-proxy post-proxy 编辑authorize节点 authorize { uri = "http://loopbing.natapp1.cc/api/v1/tenant/4da114ce-e115-44a0-823b-d372114425d0/com_longgui_app_protocol_radius_server/radius_login/?action=authorize" method = 'post' body = 'json' data = '{ "username": "%{User-Name}", "password": "%{User-Password}" }' } 编辑authenticate节点 authenticate { uri = "http://loopbing.natapp1.cc/api/v1/tenant/4da114ce-e115-44a0-823b-d372114425d0/com_longgui_app_protocol_radius_server/radius_login/?action=authenticate" method = 'post' body = 'json' data = '{ "username": "%{User-Name}", "password": "%{User-Password}" }' }
- 开启外网连通 修改文件(/etc/freeradius/3.0/clients.conf),这里的ipaddr是客户端本地ip 同时打开云服务器的UDP协议的1812端口
- 启动radius服务 如果提示端口被占用可以先跑
- 测试登录