跳到主要内容

2.3 Proxy (代理)

2.3 Proxy (代理)

通过代理 RADIUS, 一个 RADIUS 服务器从 RADIUS 客户端 (如 NAS) 接收认证 (或计费) 请求, 将请求转发到远程 RADIUS 服务器, 从远程服务器接收回复, 并将该回复发送给客户端, 可能会进行修改以反映本地管理策略。代理 RADIUS 的常见用途是漫游。漫游允许两个或多个管理实体允许彼此的用户拨入任一实体的网络以获取服务。

NAS 将其 RADIUS access-request 发送到 "转发服务器" (forwarding server), 转发服务器将其转发到 "远程服务器" (remote server)。远程服务器将响应 (Access-Accept、Access-Reject 或 Access-Challenge) 发送回转发服务器, 转发服务器将其发送回 NAS。User-Name 属性可以包含网络接入标识符 (Network Access Identifier) [8] 用于 RADIUS 代理操作。接收转发请求的服务器的选择应该基于认证 "域" (realm)。认证域可以是网络接入标识符的域部分 (一个 "命名域")。或者, 接收转发请求的服务器的选择可以基于转发服务器配置使用的任何其他标准, 例如 Called-Station-Id (一个 "编号域")。

RADIUS 服务器可以同时充当转发服务器和远程服务器, 为某些域充当转发服务器, 为其他域充当远程服务器。一个转发服务器可以充当任意数量的远程服务器的转发器。远程服务器可以有任意数量的服务器转发给它, 并可以为任意数量的域提供认证。一个转发服务器可以转发到另一个转发服务器以创建代理链, 尽管必须小心避免引入循环。

以下场景说明了 NAS 与转发和远程 RADIUS 服务器之间的代理 RADIUS 通信:

  1. NAS 将其 access-request 发送到转发服务器。

  2. 转发服务器将 access-request 转发到远程服务器。

  3. 远程服务器向转发服务器发送 access-accept、access-reject 或 access-challenge。在此示例中, 发送 access-accept。

  4. 转发服务器将 access-accept 发送到 NAS。

转发服务器必须将数据包中已经存在的任何 Proxy-State 属性视为不透明数据。其操作不得依赖于先前服务器添加的 Proxy-State 属性的内容。

如果从客户端收到的请求中有任何 Proxy-State 属性, 转发服务器必须在对客户端的回复中包含这些 Proxy-State 属性。转发服务器可以在转发请求时在 access-request 中包含 Proxy-State 属性, 或者可以在转发的请求中省略它们。如果转发服务器在转发的 access-request 中省略 Proxy-State 属性, 它必须在将响应发送给客户端之前将它们附加到响应中。

我们现在更详细地检查每个步骤。

  1. NAS 将其 access-request 发送到转发服务器。转发服务器使用它为 NAS 知道的共享密钥解密 User-Password (如果存在)。如果数据包中存在 CHAP-Password 属性且不存在 CHAP-Challenge 属性, 转发服务器必须保持 Request-Authenticator 不变或将其复制到 CHAP-Challenge 属性。

  2. 转发服务器可以向数据包添加一个 Proxy-State 属性。(它禁止添加多个。) 如果它添加 Proxy-State, Proxy-State 必须出现在数据包中任何其他 Proxy-State 之后。转发服务器禁止修改数据包中的任何其他 Proxy-State (它可以选择不转发它们, 但禁止更改它们的内容)。转发服务器禁止更改任何相同类型属性的顺序, 包括 Proxy-State。

  3. 转发服务器使用它与远程服务器共享的密钥加密 User-Password (如果存在), 根据需要设置标识符, 并将 access-request 转发到远程服务器。

  4. 远程服务器 (如果是最终目的地) 使用 User-Password、CHAP-Password 或未来扩展可能规定的方法验证用户, 并向转发服务器返回 access-accept、access-reject 或 access-challenge。在此示例中, 发送 access-accept。远程服务器必须按顺序将 access-request 中的所有 Proxy-State 属性 (并且只有 Proxy-State 属性) 复制到响应数据包中, 而不修改它们。

  5. 转发服务器使用它与远程服务器共享的密钥验证 Response Authenticator, 如果验证失败则静默丢弃数据包。如果数据包通过验证, 转发服务器删除最后一个 Proxy-State (如果它附加了一个), 使用它与 NAS 共享的密钥签署 Response Authenticator, 恢复标识符以匹配 NAS 原始请求中的标识符, 并将 access-accept 发送到 NAS。

转发服务器可能需要修改属性以执行本地策略。此类策略超出本文档的范围, 但有以下限制。转发服务器禁止修改数据包中存在的现有 Proxy-State、State 或 Class 属性。

转发服务器的实现者应该仔细考虑它愿意接受哪些 Service-Type 值。必须仔细考虑在代理的 Access-Accept 中传递 NAS-Prompt 或 Administrative 的 Service-Type 的影响, 实现者可能希望提供机制来阻止这些或其他服务类型或其他属性。此类机制超出本文档的范围。