0

我正在 java 应用程序中的客户端上实现 RADIUS 身份验证过程。

RADIUS 服务器使用RSA SecurID对用户进行身份验证。众所周知,RSA SecurID使用令牌。当用户忘记了令牌的密码时,可以在服务器上将令牌设置为特殊的新密码模式,强制用户在下次登录尝试时设置新密码。

据我所知,与服务器的通信工作流程如下所示:

  1. 客户端:使用通常的属性向服务器发送访问请求包。
  2. 服务器:回复一个包,表示特殊的新pin模式
  3. 客户端:向用户显示一个界面以输入新的密码。将包含新 pin 的包发送到服务器。
  4. 服务器:回复一个包,说明已成功设置引脚。
  5. 客户:显示一条确认消息并要求用户输入他使用令牌上的新密码创建的新密码。我认为这与步骤 1 中的包基本相同。
  6. 服务器:如果 OK 则回复 Access-Accept 包,如果 Not-OK 则回复 Access-Reject

对于第 2、3、4 和 5 步,我不知道包结构是什么样的,因此无法在客户端上实现任何逻辑。有没有人知道服务器与令牌的通信处于新的 pin 模式?

干杯西蒙

使用的令牌如下所示。要创建有效的密码,您需要首先输入您的 PIN 并点击 7 下方的菱形键:

这
(来源:comprosec.ch

4

1 回答 1

1

事实证明,您需要查看在服务器的 RADIUS 数据包中发送的“回复消息”(类型 18)属性。这很 hacky,但它是官方的解决方案,因为 RADIUS 协议不支持这种状态(请参阅RFC 2865)。与您的 RSA 联系人交谈,他们可以为您提供一个测试服务器和 2 个测试令牌来测试您的解析代码。

这是我到目前为止发现的:

  • 新 PIN 模式进入

回复消息包含“输入具有 4 到 6 位数字的新 PIN:”

  • 新 PIN 模式请求确认 PIN

回复消息包含“请重新输入新 PIN:”

  • 新密码模式成功

回复消息包含“PIN 已接受”

  • 下一个令牌代码模式开始

回复消息包含“输入新的令牌代码”

于 2013-07-15T09:57:21.563 回答