• Radius 身份认证 Java 客户端(FreeRADIUS)


    FreeRADIUS 是一个高性能和高可配置的多协议策略服务器,支持RADIUS,DHCPv4 DHCPv6、TACACS+ 和 VMPS。它是根据 GNU GPLv2 的条款提供的。 使用 RADIUS 允许对网络进行身份验证和授权 集中化,并最大限度地减少必须 在向网络添加或删除新用户时完成。

    搭建步骤

    一、环境要求

    OS:CentOS7 机器
    FreeRadius:FreeRADIUS Version 3.0.13
    FreeRADIUS Version

    二、安装配置及其环境搭建

    1.安装 freeradius
    yum install freeradius
    
    • 1
    2.配置认证用户

    2.1. 修改 /etc/raddb/mods-config/files/authorize 文件,添加认证用户信息

    # 配置了一个 username 为 testing, password 为 password 的认证用户
    testing Cleartext-Password := "password"
    
    • 1
    • 2

    2.2. 启动 freeradius 服务器,本机测试

    # 1. 使用命令 radiusd 启动 freeradius (或使用 radiusd -X 以调试模式启动 freeradius)
    radiusd
    
    # 在本机环境(安装了 freeradius 服务器的 CentOS7 机器上)执行以下命令进行测试
    # 2. 使用 username 为 testing , password 为 password ,密钥为 testing123 的用户进行 radius 登录认证
    radtest testing password 127.0.0.1 0 testing123
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    3.添加客户端

    3.1. 配置客户端信息,允许客户端进行访问
    修改 /etc/raddb/clients.conf 配置文件,添加

    # 配置客户端,允许该客户端进行访问 
    # ipaddr = 0.0.0.0 表示允许所有的地址进行访问
    
    client new {
            ipaddr = 0.0.0.0
            secret = testing123
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    重启 radius,可使用 netstat -anp | grep 1812; kill -9 pid 进行 radius 的停止,并重新运行 radiusd 启动 radius

    3.2. 需要开放 1812/udp 和 1813/udp 端口

    firewall-cmd --add-port=1812/udp
    firewall-cmd --add-port=1812/udp --permanent
    firewall-cmd --add-port=1813/udp
    firewall-cmd --add-port=1813/udp --permanent
    
    • 1
    • 2
    • 3
    • 4
    4.使用 Java 客户端进行测试

    4.1. 需要依赖

        // https://mvnrepository.com/artifact/net.jradius/jradius-core
        implementation 'net.jradius:jradius-core:1.1.5'
        // https://mvnrepository.com/artifact/net.jradius/jradius-dictionary
        implementation 'net.jradius:jradius-dictionary:1.1.5'
        // https://mvnrepository.com/artifact/net.jradius/jradius-extended
        implementation 'net.jradius:jradius-extended:1.1.5'
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4.2. Java client 测试代码

        public static void main(String[] args) {
    
            String serverIp = "192.168.0.1";
            String username = "testing";
            String password = "password";
            String secret = "testing123";
            try {
                AttributeFactory.loadAttributeDictionary("net.jradius.dictionary.AttributeDictionaryImpl");
                InetAddress host = InetAddress.getByName(serverIp);
                RadiusClient rc = new RadiusClient(host, secret, 1812, 1813, 20);
                AttributeList attrs = new AttributeList();
                attrs.add(new Attr_UserName(username));
                attrs.add(new Attr_NASPortType(Attr_NASPortType.Wireless80211));
                attrs.add(new Attr_NASPort(1));
                AccessRequest request = new AccessRequest(rc, attrs);
                request.addAttribute(new Attr_UserPassword(password));
                RadiusResponse reply = rc.authenticate(request, new EAPMD5Authenticator() {
                }, 5);
    
                logger.info("Received:\n" + reply.toString());
    
                boolean isAuthenticated = (reply instanceof AccessAccept);
    
                String replyMessage = (String) reply.getAttributeValue(Attr_ReplyMessage.TYPE);
                if (replyMessage != null) {
                    logger.info("Reply Message: " + replyMessage);
                }
                System.out.println(isAuthenticated);
            } catch (Exception e) {
                logger.error("Failed", e);
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    参考文档:
    https://blog.csdn.net/weixin_37655163/article/details/104518642

    源码: FreeRADIUS/freeradius-server:FreeRADIUS - 一个多协议策略服务器。 (github.com)

    官方文档:Documentation (freeradius.org)

    安装配置测试文档Getting Started (freeradius.org)

  • 相关阅读:
    connection is being used##server is in use and cannot be deleted
    思科交换设备安全配置命令
    docker
    基于springboot+vue的养老院管理系统 前后端分离项目
    易基因|病毒抗性:全基因组DNA甲基化揭示草鱼年龄相关病毒易感性的表观遗传机制
    JVM 内存结构
    计算机网络——分层结构,协议接口,服务
    基于Java毕业设计预约挂号系统演示录像2021源码+系统+mysql+lw文档+部署软件
    【GlobalMapper精品教程】027:路径剖面和和视线工具的使用
    C++ Qt开发:Qt的安装与配置
  • 原文地址:https://blog.csdn.net/weixin_39651041/article/details/127879760