-
RADIUS
锁定
RADIUS:Remote Authentication Dial In User Service,
远程用户拨号认证系统由RFC2865,RFC2866定义,是目前应用最广泛的
AAA协议。AAA是一种管理框架,因此,它可以用多种协议来实现。在实践中,人们最常使用远程访问拨号用户服务(Remote Authentication Dial In User Service,RADIUS)来实现AAA。
RADIUS是一种C/S结构的协议,它的
客户端最初就是
NAS(Net Access Server)
服务器,任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端。RADIUS协议认证机制灵活,可以采用
PAP、
CHAP或者Unix登录认证等多种方式。RADIUS是一种可扩展的协议,它进行的全部工作都是基于Attribute-Length-Value的向量进行的。RADIUS也支持厂商扩充厂家专有属性。
由于RADIUS协议简单明确,可扩充,因此得到了广泛应用,包括普通电话上网、
ADSL上网、小区宽带上网、IP电话、
VPDN(Virtual Private Dialup Networks,基于
拨号用户的虚拟专用拨号网业务)、移动电话预付费等业务。IEEE提出了
802.1x标准,这是一种基于
端口的标准,用于对
无线网络的接入认证,在认证时也采用RADIUS协议。
- 中文名
- 远程用户拨号认证服务
- 外文名
- Remote Authentication Dial In User Service
- 简 称
- RADIUS
- 应用学科
- 网络通信
- 属 性
- AAA认证协议
- 行业标准
- RFC2865 RFC2866 IEEE802.1x
历史
RADIUS协议最初是由Livingston公司提出的,原先的目的是为
拨号用户进行认证和计费。后来经过多次改进,形成了一项通用的认证计费协议。
创立于1966年的Merit Network, Inc.是
密执安大学的一家非营利公司,其业务是运行维护该校的
网络互联MichNet。1987年,Merit在美国NSF(国家科学基金会)的招标中胜出,赢得了NSFnet(即Internet前身)的运营合同。因为NSFnet是基于IP的网络,而MichNet却基于专有
网络协议,Merit面对着如何将MichNet的专有网络协议演变为IP协议,同时也要把MichNet上的大量拨号业务以及其相关专有协议移植到
IP网络上来。
1991年,Merit决定招标拨号
服务器供应商,几个月后,一家叫Livingston的公司提出了建议,冠名为RADIUS,并为此获得了合同。
1992年秋天,IETF的NASREQ工作组成立,随之提交了RADIUS作为草案。很快,RADIUS成为事实上的
网络接入标准,几乎所有的网络接入
服务器厂商均实现了该协议。
1997年,RADIUS RFC2058发表,随后是RFC2138,最新的RADIUS RFC2865发表于2000年6月。
功能描述
组网应用
常见的AAA组网示意如图所示,其中RADIUS应用在AAA服务器上对用户进行认证、授权和计费服务。
图中NAS(网络接入服务器)作为RADIUS客户端,向远程接入用户提供接入及与RADIUS服务器交互的服务。RADIUS服务器上则存储用户的身份信息、授权信息以及访问记录,对用户进行认证、授权和计费服务。
工作原理
用户接入NAS,NAS使用Access-Require
数据包向
RADIUS服务器提交用户信息,包括用户名、密码等相关信息,其中用户密码是经过MD5加密的,双方使用共享
密钥,这个密钥不经过网络传播;RADIUS服务器对用户名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步对
用户认证,也可以对NAS进行类似的认证;如果合法,给NAS返回Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject数据包,拒绝用户访问;如果允许访问,NAS向RADIUS服务器提出计费请求Account- Require,RADIUS服务器响应Account-Accept,对用户的计费开始,同时用户可以进行自己的相关操作。
RADIUS还支持代理和漫游功能。简单地说,代理就是一台
服务器,可以作为其他RADIUS服务器的代理,负责转发RADIUS认证和计费
数据包。所谓漫游功能,就是代理的一个具体实现,这样可以让用户通过本来和其无关的RADIUS
服务器进行认证,用户到非归属运营商所在地也可以得到服务,也可以实现虚拟运营。
RADIUS
服务器和NAS服务器通过UDP协议进行通信,RADIUS服务器的1812
端口负责认证,1813端口负责计费工作。采用UDP的基本考虑是因为NAS和RADIUS
服务器大多在同一个
局域网中,使用UDP更加快捷方便,而且UDP是无连接的,会减轻RADIUS的压力,也更安全。
RADIUS协议还规定了
重传机制。如果NAS向某个RADIUS
服务器提交请求没有收到返回信息,那么可以要求备份RADIUS
服务器重传。由于有多个备份RADIUS
服务器,因此NAS进行重传的时候,可以采用
轮询的方法。如果备份RADIUS服务器的
密钥和以前RADIUS服务器的密钥不同,则需要重新进行认证。
优势特点
RADIUS协议承载于UDP之上,官方指定端口号为认证授权端口1812、计费端口1813。RADIUS协议简单明确、扩展性好,因此得到了广泛应用,具有以下特点:
NAS作为RADIUS的客户端负责将用户信息传递给指定的RADIUS服务器,然后处理RADIUS服务器的返回结果。RADIUS服务器负责接收用户的连接请求,对用户进行认证,给客户端返回用户配置信息。
客户端与RADIUS服务器之间的交互是通过共享密钥来进行相互认证的,以减少在不安全的网络中用户密码被侦听到的可能性。
RADIUS是一种可扩展的协议,所有的交互报文由多个不同长度的ALV(Attribute-Length-Value)三元组组成,新增加属性和属性值不会破坏到协议的原有实现。因此RADIUS协议也支持设备厂商扩充厂家专有属性。
RADIUS协议认证机制灵活,支持多种认证用户的方式。如果用户提供了用户名和用户密码的明文,RADIUS协议能够支持PAP、CHAP、UNIX login等多种认证方式。
RADIUS协议简单明确、扩展性强,因此得到了广泛应用。在普通电话拨号上网、ADSL拨号上网、社区宽带上网、VPDN业务、移动电话预付费等业务中都能见到RADIUS的身影。
协议结构
Code域长度为1个字节,用于标明RADIUS
报文的类型,如果Code域中的内容是无效值,报文将被丢弃,有效值如下:
2、接收访问(Access-Accept);
3、拒绝访问(Access-Reject);
4、计费请求(Accounting-Request);
5、计费响应(Accounting-Response);
11、挑战访问(Access-Challenge);
12、
服务器状况(Status-Server — Experimental);
13、客户机状况(Status-Client — Experimental);
255、预留(Reserved)
Length― 信息大小,包括头部。
Authenticator域占用16个字节,用于Radius Client 和Server之间
消息认证的有效性,和密码隐藏算法。访问请求Access-Request报文中的认证字的值是16字节随机数,认证字的值要不能被预测并且在一个共享
密钥的生命期内唯一。
1.访问请求认证字
在Access-Request包中认证字的值是16字节随机数,认证字的值要不能被预测,并且在一个共享
密钥的生命期内唯一;
2.访问回应认证字
Access-Accept Access-Reject 和Access-Challenge包中的认证字称为访问回应认证字,访问回应认证字的值定义为MD5(Code+ID+Length+RequestAuth+Attributes+Secret);
3.计费请求认证字
在计费请求包中的认证字域称为计费请求认证字,它是一个16字节的MD5校验和,计费请求认证字的值定义为MD5(Code + Identifier + Length + 16 zero octets + request attributes +shared secret);
4.计费回应认证字
在计费回应
报文中的认证字域称为计费回应认证字,它的值定义为MD5(Accounting-Response Code + Identifier + Length + the RequestAuthenticator field from the Accounting-Request packet being replied to +the response attributes + shared secret);
消息交互
radius
服务器对用户的认证过程通常需要利用
nas等设备的代理认证功能,radius
客户端和radius 服务器之间通过共享
密钥认证相互间交互的消息,用户密码采用密文方式在网络上传输,增强了安全性。radius 协议合并了认证和授权过程,即响应
报文中携带了授权信息。
基本交互步骤如下:
(1) 用户输入用户名和口令;
(2) radius
客户端根据获取的用户名和口令,向radius
服务器发送认证请求包(access-request)。
(3) radius
服务器将该用户信息与users 数据库信息进行对比分析,如果认证成功,则将用户的权限信息以认证响应包(access-accept)发送给radius
客户端;如果认证失败,则返回access-reject 响应包。
(4) radius
客户端根据接收到的认证结果接入/拒绝用户。如果可以接入用户,则radius
客户端向radius
服务器发送计费开始请求包(accounting-request),status-type 取值为start;
(5) radius
服务器返回计费开始响应包(accounting-response);
(6) radius
客户端向radius
服务器发送计费停止请求包(accounting-request),status-type 取值为stop;
(7) radius
服务器返回计费结束响应包(accounting-response)。
词条标签:
中国通信学会 , 通信技术 , 计算机学 , 科技
- D django 用户认证系统
django认证系统包含三个部分:用户.权限和分组 安装 django项目默认启用了认证系统,如果不是使用django-admin.py创建项目的可以通过在settings配置文件里面的INSTALL ...
- Django用户认证系统(二)Web请求中的认证
在每个Web请求中都提供一个 request.user 属性来表示当前用户.如果当前用户未登录,则该属性为AnonymousUser的一个实例,反之,则是一个User实例. 你可以通过is_authe ...
- Django用户认证系统(一)User对象
User对象 User对象是认证系统的核心.用户对象通常用来代表网站的用户,并支持例如访问控制.注册用户.关联创建者和内容等.在Django认证框架中只有一个用户类,例如超级用户('superuser ...
- 云方案,依托H3C彩虹云存储架构,结合UIA统一认证系统,实现了用户数据的集中存储和管理
客户的声音 资料云项目在迷你云基础上二次开发,通过使用云存储技术及文件秒传技术,对文件进行统一存储与管理,以达到节约文件管理成本.存储成本目的:通过有效的文件版本控制机制,以达到风险管控的目的:通过多 ...
- django(权限、认证)系统——用户Login,Logout
上面两篇文章,讲述的Django的Authentication系统的核心模型对象User API和相关的使用,本文继续深入,讨论如何在Web中使用Authentication系统. 前面说了,Djan ...
- django用户认证系统——拓展 User 模型
Django 用户认证系统提供了一个内置的 User 对象,用于记录用户的用户名,密码等个人信息.对于 Django 内置的 User 模型, 仅包含以下一些主要的属性: username,即用户名 ...
- “Django用户认证系统”学习资料收集
首推追梦人物——Django用户认证系统 待续……
- Django Authentication 用户认证系统
一. Django的认证系统 Django自带一个用户认证系统,用于处理用户账户.群组.许可和基于cookie的用户会话. 1.1 概览 Django的认证系统包含了身份验证和权限管理两部分.简单地说 ...
- django “如何”系列1:如何使用REMOTE_USER(远程用户)进行认证
这节主要介绍当web服务器使用了REMOTE_USER的时候,该如何在你的django应用中使用外部的认证源,远程用户主要见于企业内部网,主要使用单点登录解决方案. 在django中,REMOTE_U ...
随机推荐
- LeetCode 笔记23 Best Time to Buy and Sell Stock III
Best Time to Buy and Sell Stock III Say you have an array for which the ith element is the price of ...
- Anaconda安装更新库
平台:win64+anaconda 1. 如何查看已安装的库 打开 Anaconda Command Prompt ,在命令提示符窗口中输入以下命令: pip list # 或者 conda list ...
- Flex的正则表达式匹配速度与手工代码的比较
flex是一个词法分析器生成器,它是编译器和解释器编程人员的常用工具之一.flex的程序主要由一系列带有指令(称为动作代码)的正则表达式组成.在匹配输入时,flex会将所有的正则表达式翻译成确定性有穷 ...
- php mysqli扩展之预处理
在前一篇 mysqli基础知识中谈到mysqli的安装及基础操作(主要是单条sql语句的查询操作),今天介绍的是mysqli中很重要的一个部分:预处理. 在mysqli操作中常常涉及到它的三个主要类: ...
- Orchard创建自定义表单
本文链接:http://www.cnblogs.com/souther/p/4520130.html 主目录 自定义表单模块可以用来获取网站前台用户的信息.自定义表单需要与一个内容类型结合使用.它可以 ...
- 汇顶科技&&硬件类笔试题目
汇顶科技硬件类笔试题目,每年都有变化,但是题目类型都差不多.汇顶科技17年在南京地区大概招了20个左右吧,给的待遇还是不错的,工作地点上海深圳
- angular的DEMO(用来练习和顺便看看)
inflector(辅助) 将用户输入的字符串转化成驼峰或者空格或者底线的小插件; 这个是一个小的过滤器, 平常也是用不到的, 合格是过滤器的代码: app.filter("inflecto ...
- C# JArray与JObject 的使用 json [{}]
C# JArray与JObject 的使用 STEP1.using Newtonsoft.Json.Linq; STEP2 如何获取json里的某个属性(节点)值,对其删改,新增 //2.1 数组用J ...
- Ibatis学习总结1--ibatis简介和SQL Maps
最佳维护的一个项目使的是ibatis框架,在闲暇之余将手头的开发手册和平时开发的理解做一下总结,言归正传. 简介 使用 SQL Map,能够大大减少访问关系数据库的代码.SQL Map 使用简单的 X ...
- 【转】Oracle集合操作函数:union、intersect、minus
集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT, MINUS.当使用集合操作符时,必须确保不同查询的列个数和数据类型匹配. 集合操作符 ...