跳到主要内容

2. Operation (操作)

2. Operation (操作)

当客户端配置为使用 RADIUS 时, 客户端的任何用户都会向客户端提供认证信息。这可能通过可自定义的登录提示进行, 用户需要输入其用户名和密码。或者, 用户可能使用链路成帧协议 (link framing protocol), 如点对点协议 (Point-to-Point Protocol, PPP), 该协议具有携带此信息的认证数据包。

一旦客户端获得了这些信息, 它可以选择使用 RADIUS 进行认证。为此, 客户端创建一个 "Access-Request", 其中包含诸如用户名、用户密码、客户端 ID 以及用户正在访问的端口 ID 等属性。当存在密码时, 它使用基于 RSA 消息摘要算法 MD5 [3] 的方法进行隐藏。

Access-Request 通过网络提交给 RADIUS 服务器。如果在一段时间内没有返回响应, 则请求将被重新发送多次。如果主服务器宕机或不可达, 客户端还可以将请求转发到备用服务器。备用服务器可以在对主服务器的多次尝试失败后使用, 或以轮询 (round-robin) 方式使用。重试和回退算法是当前研究的主题, 本文档中未详细说明。

一旦 RADIUS 服务器收到请求, 它会验证发送客户端。来自 RADIUS 服务器没有共享密钥的客户端的请求必须被静默丢弃。如果客户端有效, RADIUS 服务器会查询用户数据库以找到名称与请求匹配的用户。数据库中的用户条目包含必须满足才能允许该用户访问的要求列表。这始终包括密码验证, 但也可以指定允许用户访问的客户端或端口。

RADIUS 服务器可以向其他服务器发出请求以满足该请求, 在这种情况下它充当客户端。

如果 Access-Request 中存在任何 Proxy-State 属性, 则必须将它们未修改地按顺序复制到响应数据包中。其他属性可以放置在 Proxy-State 属性之前、之后, 甚至之间。

如果任何条件不满足, RADIUS 服务器会发送 "Access-Reject" 响应, 指示此用户请求无效。如果需要, 服务器可以在 Access-Reject 中包含文本消息, 客户端可以将其显示给用户。Access-Reject 中不允许使用其他属性 (除 Proxy-State 外)。

如果所有条件都满足且 RADIUS 服务器希望发出用户必须响应的质询 (challenge), 则 RADIUS 服务器发送 "Access-Challenge" 响应。它可以包含要由客户端向用户显示的文本消息, 提示对质询的响应, 并且可以包含 State 属性。

如果客户端收到 Access-Challenge 并支持质询/响应, 它可以向用户显示文本消息 (如果有), 然后提示用户进行响应。然后客户端使用新的请求 ID 重新提交其原始 Access-Request, 将 User-Password 属性替换为响应 (加密的), 并包含来自 Access-Challenge 的 State 属性 (如果有)。请求中应该只存在 0 个或 1 个 State 属性实例。服务器可以使用 Access-Accept、Access-Reject 或另一个 Access-Challenge 响应此新的 Access-Request。

如果所有条件都满足, 用户的配置值列表将被放入 "Access-Accept" 响应中。这些值包括服务类型 (例如: SLIP、PPP、Login User) 以及提供所需服务所需的所有必要值。对于 SLIP 和 PPP, 这可能包括诸如 IP 地址、子网掩码、MTU、期望的压缩和期望的数据包过滤器标识符等值。对于字符模式用户, 这可能包括诸如期望的协议和主机等值。