PPP 扩展认证协议(EAP)用于 PPP 认证,可以支持多种认证机制。EAP 并不在链路控制阶段指定认证方法,而是把这个过程推迟到认证阶段。这样认证方就可以在要求更多的信息以后再决定使用什么认证方法。这种机制就允许使用一台“后端“服务器来真正执行认证机制,而 PPP 认证方只是传递认证交换信息。
- 在链路建立阶段完成以后,认证方向对端发送一个或多个请求报文去认证结点。在请求报文中有一个类型字段用来指明认证方所请求的信息,例如是 ID、MD5 的挑战字、一次密码(OTP)以及通用令牌卡等。MD5 的挑战字对应于 CHAP 认证协议的挑战字。通常认证方首先发送一个初始的 ID 请求随后再发送其他的请求信息。当然,这个 ID 请求报文并不是必须的,在对端身份是已知的情况下(如租用线、拨号专线等)可以跳过这个步骤。
- 端点对每一个请求报文回应一个应答包。和请求报文一样,应答报文中也包含一个类型字段,对应于所回应的请求报文中的类型字段。
- 认证方通过发送一个成功或者失败的报文来结束认证过程。
EAP 可以支持多种认证机制,而无需在 LCP 阶段预协商过程中指定一种认证机制。某些设备(例如:网络接入服务器)不需要了解每一个请求报文的类型,而是作为一个代理把认证报文直接传递给后端的认证服务器。设备只需关心认证结果是成功还是失败,然后结束认证阶段。
EAP 需要在 LCP 中增加一个新的认证类型,这样现有的 PPP 要想使用 EAP 就必须进行修改。同时,使用 EAP 也和先前的在 LCP 协商阶段指定认证方法的 PPP 认证模型不一致。
协议结构
提供 EAP 认证协议的配置选项格式如下所示:
| 8 | 16 | 32 bit | Variable |
| Type | Length | Authentication-Protocol | Data |
- Type ― 3
- Length ― 4
- Authentication-Protocol ― 对于 PPP 中的 EAP,该字段为C227(十六进制)。
一个 PPP EAP 数据包封装在 PPP 数据链路层帧的 Information 字段,其中的 Protocol 字段表示类型为十六进制 C227(PPP EAP)。EAP 数据包格式如下所示:
| 8 | 16 | 32 bit | Variable |
| Code | Identifier | Length | Data |
- Code ― Code 字段识别 EAP 数据包类型。
- EAP 代码分配如下:1、请求(Request);2、响应(Response);3、成功(Success);4、失败(Failure)
- Identifier ― Identifier 字段用于匹配响应和请求信息。
- Length ― Length 字段表示 EAP 数据包的长度,包括 Code、Identifier、Length 和 Data 字段
- Data ― Data 字段的格式取决于 Code 字段。
相关协议:PPP、CHAP
组织来源:EAP 由 IETF(http://www.ietf.org/)定义。
相关链接:http://www.javvin.com/protocol/rfc2284.pdf: PPP Extensible Authentication Protocol (EAP)


