-
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 ...
随机推荐
- Java集合---面试题
HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此 ...
- JQuery学习笔记——JQuery基础
#,JQuery避免名称冲突的方法 var jq = jQuery.noConfilct(); jq.ready( function(){ jq("p").hidden() ...
- REST: C#调用REST API (zz)
由于辞职的原因,最近正在忙于找工作.在这段期间收到了一家公司的上机测试题,一共两道题,其中一道题是关于REST API的应用.虽然在面试时,我已经说过,不懂REST,但那面试PM还是给了一道这题让我做 ...
- JS模拟Alert与Confirm对话框
这2个例子都是用原生JS写的,主要是用JS拼接了界面,并未做过多的事件监听.,样式用了Css3的一些特性. 调用方式则为: //Alert Alert.show('我警告你哦~'); //Confir ...
- python实现简易数据库之二——单表查询和top N实现
上一篇中,介绍了我们的存储和索引建立过程,这篇将介绍SQL查询.单表查询和TOPN实现. 一.SQL解析 正规的sql解析是用语法分析器,但是我找了好久,只知道可以用YACC.BISON等,sqlit ...
- 自己保留:data provider
<system.data> <DbProviderFactories > <add name="MySQL Data Provider" ...
- 'UserInfoBLL' node cannot be resolved for the specified context [MVC展示数据.Controllers.LoginController]问题解决
我们在配置Spring.Net时,往往会提示找不到,然而看了看都对着呢?那么问题出在了哪? 问题呈现: 进行如下修改,将名字随便取个,不为BLL方法名字即可,我这里添加了一个1,注意这里改了,控制器里 ...
- Java线程池应用
Executors工具类用于创建Java线程池和定时器. newFixedThreadPool:创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程.在任意点,在大多数 nThread ...
- Java继承中属性、方法和对象的关系
大家都知道子类继承父类是类型的继承,包括属性和方法!如果子类和父类中的方法签名相同就叫覆盖!如果子类和父类的属性相同,父类就会隐藏自己的属性! 但是如果我用父类和子类所创建的引用指向子类所创建的对象, ...
- poj3468 splay(成段跟新 区间求和)
用splay做了一遍. 建树时是按照数列序号从小到大排好的,每个节点左子树的序号小于右子树的序号及这个节点本身.由于查询[l,r]要伸展l-1,r+1所以我们要多加2个结点,保证边界处理时不出问题.由 ...