忆龙2009:细节看802.1x supplicant 状态机

 

      本文以客户端周期性收到交换机的EAP-IDENTITY REQUEST报文为例,从细节看2001版本及2004版本的区别。这也顺带解答网友yangffjj的提问。

      注意:本文讨论的是SUPPLICANT状态机,而不是AUTHENTICATOR状态机,也就是观察的角度是从客户端来看的,因此您需要特别注意您所处的角度,否则您一定会质疑本文所提到的流程。

忆龙2009:细节看802.1x supplicant 状态机_第1张图片

      上图所示为2001版本的supplicant PAE状态机。当处于已认证状态(AUTHENTICATED)的客户端周期性EAP-IDENTITY REQUEST报文时,其状态变迁如下:

(1)收到EAP-IDENTITY REQUEST,AUTHENTICATED-->ACQUIRED,此时suppStatus=Authorized并无改变

(2)客户端通过txRspId() 回应EAP-IDENTITY RESPONSE,如果交换机继续此时回应EAP-MD5-REQUEST,则进入重认证状态(AUTHENTICATING),报文不做讨论;如果交换机回应EAP-IDENTITY-REQUEST,则状态继续保留在ACQUIRED。如果此操作在authWhile内完成,说明在规定的时间内,交换机一直与您保持正常通信。

注意:这个操作就是一些厂商所说的握手过程,而握手这个概念在标准中并没有定义。这也说明了WINDOWS XP不完全支持握手的原因。如果在某些情况下发现XP不能很好地支持握手功能,你应该将交换机的握手功能关闭。

(3)支持握手功能的客户端估计并没有完全遵守2001版本所定义的SUPPLICANT状态机。这个具体的实现每个厂商可能会有不同。因此不好用此图来解释所有客户端的工作流程。此图只能作为一个参考。

忆龙2009:细节看802.1x supplicant 状态机_第2张图片

忆龙2009:细节看802.1x supplicant 状态机_第3张图片

      以上两图是2004版本的SUPPLICANT状态机,部分操作放到了BACKEND来做,因此该图不是很好理解,但主要功能及流程与2001版本并没有本质区别,因此能够兼容2001版本。

同样,我们来解释客户端持续收到交换机发出的EAP-IDENTITY-REQUEST的情况:

(1)处于AUTHENTICATED状态的客户端收到交换机发来的EAP-IDENTITY-REQUEST之后,进入RESTART状态,此时eapRestart=TRUE,等待BACKEND进行处理。

(2)BACKEND将suppStart=FALSE,开始一个新的认证过程。认证的结果有三种:FAIL/TIMEOUT/SUCCESS,对应PAE状态机中AUTHENTICATING中的三个触发条件:suppFail/suppTimeout/suppSuccess

(3)在BACKEND的REQUEST状态,WINDOWS会弹出UI界面供用户输入用户名及口令,因此只要客户端持续收到EAP-IDENTITY-REQUEST报文,XP SP3就会不停弹出UI界面,这就解释了一些利用组播触发功能来触发XP客户端完成认证过程会失败的原因。

(4)在BACKEND状态机中,只有类似以下的报文交互过程才会得到正确处理:

a) SWITCH-->EAP-IDENTITY-REQUEST-->PC

b) SWITCH<--EAP-IDENTITY-RESPONSE<--PC

c) SWITCH-->EAP-MD5-REQUEST-->PC

d) SWITCH<--EAP-MD5-RESPONSE<--PC

(5)而类似这样的交互在XP SP3上是无法正确处理的(XP SP2上可以,这也是2001、2004的区别):

a) SWITCH-->EAP-IDENTITY-REQUEST-->PC

b) SWITCH<--EAP-IDENTITY-RESPONSE<--PC     (以上两个为组播触发过程)

c) SWITCH-->EAP-IDENTITY-REQUEST-->PC

d) SWITCH<--EAP-IDENTITY-RESPONSE<--PC

e) SWITCH-->EAP-MD5-REQUEST-->PC

f) SWITCH<--EAP-MD5-RESPONSE<--PC

你可能感兴趣的:(ant)