Radius 认证协议介绍-兼rfc导读

老规矩, 先看维基: 远端用户拨入验证服务(RADIUS, Remote Authentication Dial In User Service)是一个AAA协议,意思就是同时兼顾验证(authentication)、授权(authorization)及计费(accounting)三种服务的一种网络传输协议(protocol),通常用于网络存取、或流动IP服务,适用于局域网及漫游服务。
https://zh.wikipedia.org/wiki/RADIUS

上面的介绍来自维基百科. 说的权威,但是不太好懂. 我们这里再详细介绍以下几个问题, 希望能给初次接触radius的小伙伴有所帮助:

1) Radius 到底是什么.
2) Radius 应用和工作方式.
3) Radius 的协议细节.

一. Radius 到底是什么.

上面维基百科 说的很具体了, Radius 远程拨入服务, 它集成了 认证, 授权 和计费功能. 怎么理解这个问题呢. 举个不是十分贴切的栗子, 宽带 ADSL 拨号上网的后台认证和计费系统就可以用radius, 或者 V-P-N 系统的后台验证计费系统就是radius 的使用场景.

当然, 并不能把 radius 的概念限制在 “拨号”, 实际上, 不光是这种 “拨号” 服务, 其他几乎任何服务, 都可以使用 radius 来进行认证,授权和计费服务.

二. Radius 的工作方式.

我们以搭建 V-P-N 为例, 介绍radius的工作方式.

图中有三个角色, v-p-n(下面简称XXX服务器)服务器, 客户端 和radius 服务器.

Radius 主要工作在 xxx 服务器和 Radius 服务器之间, 客户几乎直接接触不到.

对于radius 协议来说, xxx 服务器实际上是 一个client, 而 radius 服务器是真正提供服务的server.
(如果看英文文档的话, rfc有专门解释 client 和server 的章节.)

这样看起来, radius 更像是 C/S 模式的协议.

所以后面的讨论主要集中在 xxx 服务器和 radius 服务器之间, 请自行脑补.

三. Radius 的协议细节.
这里还是介绍一下大体的细节, 重点介绍如何阅读rfc. 有了方向,再读rfc就容易多了. 不会详细介绍每个字节如何生成, 这是rfc的责任.

作为参考, 这是 radius 的rfc : https://tools.ietf.org/html/rfc2865

1) 首先, radius 是基于udp的协议, 所有数据包都是封装在udp协议中.
至于为什么是udp,而不是tcp, 请参看 rfc 的解释: Why udp?

2) radius 协议包的格式.
基本上, radius 协议有四种包:

Access-Request
Access-Accept
Access-Reject
Access-Challenge

这四种包都有统一的格式: https://tools.ietf.org/html/rfc2865#page-13

这四种包在 xxx服务器和radius 服务器之间通信,来完成整个过程.

上图中, 前面三个交互是必须的, 后面两个绿色的带星号的交互不是必须的.

首先, xxx 服务器向radius发送 Access-Request 数据包, 包含用户信息和密码哈希等等信息用于认证.
此时服务器有四个选择:
第一, 如果认证通过,就返回一个 “Access-Accept” 数据包, 认证完成.
第二, 如果认证不通过,则返回 “Access-Reject”,认证失败.
第三, 如果服务器认为必要, 可以返回一个”Access-Challenge” 数据包, 让用户提供更多的附加信息以完成认证. 而xxx服务器在收到 “Access-Challenge” 消息之后, 需要向用户索要必须的附加信息,然后组成一个新的 ” Access-Request” 数据包发给radius服务器来继续认证. 此时服务器可以重复第一,或第二.
第四, 如果 “Access-Request” 数据包有问题, 服务器还可以采取 “静默丢弃”(silently discard) 的方式, 不做任何反应.

这就是主要的通信流程了.

一般来讲, 作为 radius 的客户端, “Access-Request” 数据包的格式比较重要. 他负责将认证信息加密传输给radius 服务器.
我们再介绍一下 “Access-Request” 数据包的格式:
https://tools.ietf.org/html/rfc2865#page-17

  0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier   |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                     Request Authenticator                     |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Attributes ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-

我们现在介绍后面的 “Attributes” 数据区. 这里包含了用户的密码信息.
radius 协议将用户名,密码等等身份信息 都封装成一个一个的 attribute.
举个栗子, 可能最少需要两个 attribute, 一个是用户名, 另一个是password hash. 这是最简单的方式了.

https://tools.ietf.org/html/rfc2865#page-22

目前, radius 的密码封装方式有两种,
一种是: User-Password, https://tools.ietf.org/html/rfc2865#page-27
另一种是: CHAP-Password, https://tools.ietf.org/html/rfc2865#page-28

两种方式只是密码的hash计算方法不一样而已. 具体生成方法比较明确. rfc 写的很明显,就不多说了.

到这里, radius 认证协议的客户端过程基本完成了. 至于服务端, 一般不用自己来写. 可以使用开源的现成服务端.

欢迎访问我的个人独立博客: https://blog.byNeil.com

时间: 2024-10-12 13:21:13

Radius 认证协议介绍-兼rfc导读的相关文章

SNMP协议介绍

SNMP协议介绍 一.什么是SNMP SNMP:"简单网络管理协议",用于网络管理的协议.SNMP用于网络设备的管理.SNMP的工作方式:管理员需要向设备获取数据,所以SNMP提供了 "读"操作:管理员需要向设备执行设置操作,所以SNMP提供了"写"操作:设备需要在重要状况改变的时候,向管理员通报事件的发生,所以SNMP提供了 "Trap"操作. 二.SNMP背景 SNMP 的基本思想:为不同种类的设备.不同厂家生产的设备.不

认证 协议 JWT OAuth Session Cookie

本文翻译自Auth-Boss. 如果有翻译的不恰当或不对的地方, 欢迎指出. 成为一个认证老司机, 了解网络上不同的身份认证方法. 本文档的目的是记录和编目Web上的身份验证方法.认证指的是创建一个系统的过程,用户可以通过该系统"登录"在线服务,并授予对受保护资源的访问权限.以下引用可能更好地总结我想要解释的内容: 客户端认证涉及向Web上的服务器证明客户端(或用户)的身份.[1] How 我写作风格简洁,会用到一些技术词. 免责声明:本文档不作为包含所有认证方法的网络的目录;本文档也

LDAP协议介绍

LDAP协议基础概念 1. 从用途上阐述LDAP,它是一个存储静态相关信息的服务,适合"一次记录多次读取".经常使用LDAP服务存储的信息: 公司的物理设备信息(如打印机,它的IP地址.存放位置.厂商.购买时间等)  公开的员工信息(地址.电话.电子邮件-)  合同和账号信息(客户信息.产品交付日期.投标信息.项目信息-)  凭证信息(认证凭证.许可证凭证-) 2. 从数据结构上阐述LDAP,它是一个树型结构,能有效明白的描写叙述一个组织结构特性的相关信息.在这个树型结构上的每一

流媒体协议介绍

RTP 参考文档 RFC3550/RFC3551 Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议.RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式.RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础.RTP协议和RTP控制协议RTCP一起使用,而且它是建立在UDP协议上的. RTP 本身并没有提供按时发送机制或其它

数字证书常见格式与协议介绍

引:http://blog.csdn.net/anxuegang/article/details/6157927 证书主要的文件类型和协议有: PEM.DER.PFX.JKS.KDB.CER.KEY.CSR.CRT.CRL .OCSP.SCEP等. PEM – Openssl使用 PEM(Privacy Enhanced Mail)格式来存放各种信息,它是 openssl 默认采用的信息存放方式.Openssl 中的 PEM 文件一般包含如下信息: 内容类型:表明本文件存放的是什么信息内容,它的

华为HCNP-R&S-IERN认证考试介绍

HCNP-R&S-IERN考试内容覆盖IPv4地址规划.OSPF.IS-IS.BGP路由协议.路由的控制与选择.组播路由协议:华为路由器产品介绍和组网运用.济南博赛网络技术有限公司是山东区华为唯一官方授权培训中心.山东区唯一考试中心.济南博赛网络荣获华为2014年度十佳培训合作伙伴,成为山东区输送HCIE人数最多的地方,山东第一个HCIE就出自济南博赛网络.华为认证为技术融合背景下的ICT产业提供新的能力标准,以实现华为认证引领ICT行业技术认证,播种ICT行业未来的愿景. 知识点IP基础1.I

主要流媒体协议介绍

RTP 参考文档 RFC3550/RFC3551 Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议.RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式.RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础.RTP协议和RTP控制协议RTCP一起使用,而且它是建立在UDP协议上的. RTP 本身并没有提供按时发送机制或其它

[转]流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)

[转]流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls) http://blog.csdn.net/tttyd/article/details/12032357 RTP 参考文档 RFC3550/RFC3551 Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议.RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式.RTP 协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push to Tal

openssl数字证书常见格式与协议介绍

证书主要的文件类型和协议有: PEM.DER.PFX.JKS.KDB.CER.KEY.CSR.CRT.CRL .OCSP.SCEP等. PEM – Openssl使用 PEM(Privacy Enhanced Mail)格式来存放各种信息,它是 openssl 默认采用的信息存放方式.Openssl 中的 PEM 文件一般包含如下信息: 内容类型:表明本文件存放的是什么信息内容,它的形式为“——-BEGIN XXXX ——”,与结尾的“——END XXXX——”对应. 头信息:表明数据是如果被处