我正在使用一个 RADIUS 服务器(我没有它的源代码),它对 RADIUS 身份验证请求的响应还包含随请求发送的属性。
但是,我正在查看 tinyradius 的源代码,它似乎在生成响应数据包时并没有从请求数据包中复制所有属性。如果存在,它只复制属性号 33(STATE 属性)。
RadiusClients 似乎接受任一响应。什么是正确的做法?
我正在使用一个 RADIUS 服务器(我没有它的源代码),它对 RADIUS 身份验证请求的响应还包含随请求发送的属性。
但是,我正在查看 tinyradius 的源代码,它似乎在生成响应数据包时并没有从请求数据包中复制所有属性。如果存在,它只复制属性号 33(STATE 属性)。
RadiusClients 似乎接受任一响应。什么是正确的做法?
不,RADIUS 响应不应包含所有请求属性。
状态是特殊的,它可以用来将多轮请求/响应链接在一起。
State 的两个主要用例是 OTP 身份验证,其中密码和 OTP 代码在两轮或多轮中发送,或者 EAP 身份验证再次在多轮中发生。
NAS RADIUS
--- ------
# Password round
Access-Request ->
<- Access-Challenge
[Generates random state 0x01]
# OTP round
Access-Request
[Copies state 0x01] ->
Access-Accept/Reject
如果没有 state 属性,就无法将 Access-Challenge 和后续的 Access-Request 链接在一起。
注意:没有规范如何处理状态,它只是用来将数据包捆绑在一起。在 FreeRADIUS 中,我们维护一个“会话状态”属性列表,这些属性可用于多轮身份验证尝试的所有轮次中的策略。