Portal认证通常又称Web认证,用户上网时,必须在Portal认证页面进行认证,如果未认证成功,仅可以访问特定的网络资源,认证成功后,才可以访问其他网络资源。

Portal认证具有以下优点:

Portal认证系统主要包括四个基本要素:客户端、接入设备、Portal服务器与认证服务器。

portal认证技巧(Portal认证原理)(1)

图1 Portal认证系统组网图

  1. 在认证之前,将认证网段内用户的所有HTTP/HTTPS请求都重定向到Portal服务器。
  2. 在认证过程中,与Portal服务器、认证服务器交互,完成对用户身份认证、授权与计费的功能。
  3. 在认证通过后,允许用户访问被管理员授权的网络资源。
Portal认证流程

根据网络中实施Portal认证的网络层次来分,Portal认证方式分为两种:二层认证方式和三层认证方式。

在二层认证方式下,用户上线时的报文交互流程如图2所示。

portal认证技巧(Portal认证原理)(2)

图2 Portal认证流程图

  1. 在认证之前客户端与接入设备之间建立起预连接,即客户端用户在认证成功之前在接入设备上已建立用户在线表项,并且只有部分网络访问权限。
  2. 客户端发起HTTP连接请求。
  3. 接入设备收到HTTP连接请求报文时,如果是访问Portal服务器或免认证网络资源,则接入设备允许其通过;如果是访问其它地址,则接入设备将其URL地址重定向到Portal认证页面。
  4. 客户端根据获得的URL地址向Portal服务器发起HTTP连接请求。
  5. Portal服务器向客户端返回Portal认证页面。
  6. 用户在Portal认证页面输入用户名和密码后,客户端向Portal服务器发起Portal认证请求。
  7. (可选)Portal服务器收到Portal认证请求后,如果Portal服务器与接入设备之间采用CHAP认证,则Portal服务器向接入设备发起Portal挑战字请求报文(REQ_CHALLENGE);如果Portal服务器与接入设备之间采用PAP认证,则接入设备直接进行第9步。
  8. (可选)接入设备向Portal服务器回应Portal挑战字应答报文(ACK_CHALLENGE)。
  9. Portal服务器将用户输入的用户名和密码封装在Portal认证请求报文(REQ_AUTH)中,并发送给接入设备。
  10. 接入设备根据获取到的用户名和密码,向RADIUS服务器发送RADIUS认证请求(ACCESS-Request)。
  11. RADIUS服务器对用户名和密码进行认证。如果认证成功,则RADIUS服务器向接入设备发送认证接受报文(ACCESS-ACCEPT);如果认证失败,则RADIUS服务器返回认证拒绝报文(ACCESS-REJECT)。由于RADIUS协议合并了认证和授权的过程,因此认证接受报文中也包含了用户的授权信息。
  12. 接入设备根据接收到的认证结果接入/拒绝用户。如果允许用户接入,则接入设备向RADIUS服务器发送计费开始请求报文(ACCOUNTING-REQUEST)。
  13. RADIUS服务器返回计费开始响应报文(ACCOUNTING-RESPONSE),并开始计费,将用户加入自身在线用户列表。
  14. 接入设备向Portal服务器返回Portal认证结果(ACK_AUTH),并将用户加入自身在线用户列表。
  15. Portal服务器向客户端发送认证结果报文,通知客户端认证成功,并将用户加入自身在线用户列表。
  16. Portal服务器向接入设备发送认证应答确认(AFF_ACK_AUTH)。

对于三层认证方式,客户端与接入设备之间没有建立预连接过程,其余报文处理流程跟二层认证完全一致。

MAC优先的Portal认证流程

MAC优先的Portal认证是指用户进行Portal认证成功后,在一定时间(认证服务器上配置的MAC地址有效时间)内断开网络重新连接,能够直接通过MAC认证接入,无需输入用户名密码重新进行Portal认证。具体认证流程如图3所示

portal认证技巧(Portal认证原理)(3)

图3 认证流程图

配置MAC优先Portal认证后,客户端用户首次认证时,接入设备会把客户端的MAC地址发到RADIUS服务器进行认证,但由于RADIUS服务器未查找到MAC地址信息,导致认证失败,触发客户端用户进行Portal认证。

认证成功后,RADIUS服务器会自动保存客户端的MAC地址。当客户端下线后重新尝试接入网络时,接入设备会把客户端的MAC地址发到RADIUS服务器进行认证。

Portal认证授权

认证用于确认尝试接入网络的用户身份是否合法,而授权则用于指定身份合法的用户所能拥有的网络访问权限,即用户能够访问哪些资源。授权最基础也是最常使用的参数是ACL和UCL组,此处以RADIUS授权进行说明

ACL

用户认证成功后,认证服务器将指定ACL授权给用户,则设备会根据该ACL对用户报文进行控制。

RADIUS服务器授权ACL方法:RADIUS服务器通过RADIUS标准属性Filter-Id将ACL ID授权给用户。为使授权的ACL生效,需要提前在设备上配置相应的ACL及规则。

用户组

用户组指具有相同角色、相同权限等属性的一组用户(终端)的集合。由于ACL资源有限,当每用户需要的授权ACL较多时,无法达到上线授权的用户数规格。通常情况下虽然用户数很大,但是用户权限的分类比较少的,所以可以使用用户组,每一组用户复用ACL,以利用有限的ACL支持较大规格的用户进行ACL授权。

用户组可以在RADIUS服务器上配置,也可以在设备端配置(需在AAA域下应用)。如果用户希望使用RADIUS服务器下发的用户组授权,需要保证RADIUS服务器上下发的用户组在设备上已经配置(不需在AAA域下应用)。RADIUS服务器下发的用户组授权优先级高于设备端配置的用户组授权,当服务器下发的用户组授权失败后,用户会采用设备端配置的用户组授权。

RADIUS服务器下发用户组授权的方式和下发ACL ID的方式一样,都是用11号标准属性Filter-Id来携带,属性值填充用户组名称。11号属性将优先被当成ACL编号处理。当设备上不存在该ACL编号的时候,则当成用户组处理。

free-rule

用户认证成功之前,为满足用户基本的网络访问需求,需要用户认证成功前就能获取部分网络访问权限。可在free-rule模板中配置free-rule规则,满足用户的认证成功前的网络访问需求。

Portal认证用户下线

当用户已下线,而接入设备、RADIUS服务器和Portal服务器未感知到该用户已下线时,会产生以下问题:

因此,接入设备要能够及时感知到用户已下线,删除该用户表项,并通知RADIUS服务器停止对该用户进行计费。

用户下线分为客户端主动下线、接入设备控制用户下线、认证服务器强制用户下线和Portal服务器强制用户下线。

客户端主动下线

由用户发起的主动下线,例如用户点击注销按钮,客户端向Portal服务器发送用户注销请求。具体下线流程如图4所示:

portal认证技巧(Portal认证原理)(4)

图4 客户端主动下线流程图

  1. 客户端向Portal服务器发送用户注销请求。
  2. Portal服务器向客户端发送用户注销响应,并向接入设备发送用户下线通知报文(REQ_LOGOUT)。
  3. 接入设备向RADIUS服务器发送停止计费请求报文(ACCOUNTING-REQUEST),并将用户下线。同时向Portal服务器发送用户下线响应报文(ACK_LOGOUT)。Portal服务器收到用户下线响应后,将用户下线。
  4. RADIUS服务器返回停止计费响应报文(ACCOUNTING-RESPONSE),并将用户下线。

接入设备控制用户下线

接入设备控制用户下线有两种方式:

以下线探测的下线流程为例,具体下线流程如图5所示,:

portal认证技巧(Portal认证原理)(5)

图5 用户下线探测流程图

  1. 下线探测过程。接入设备获取到客户端IP地址,启动下线探测定时器,周期为time-length。在T时间内(T = time-length/3)收到客户端报文,接入设备认为用户在线,并且在T时刻会重置下线探测定时器。在T时间内未收到客户端报文时,接入设备每隔T时间向客户端发送ARP请求报文,如果连续两次没有收到客户端的ARP请求的应答报文或其他报文,接入设备认为用户已下线。
  2. 接入设备向Portal服务器发送用户下线通知(NTF_LOGOUT),并将用户下线。同时,接入设备向RADIUS服务器发送停止计费请求报文(ACCOUNTING-REQUEST)。
  3. Portal服务器向接入设备发送用户下线响应报文(AFF_ACK_LOGOUT),并将用户下线。RADIUS服务器向接入设备发送停止计费响应报文(ACCOUNTING-RESPONSE),并将用户下线。

认证服务器强制用户下线

服务器强制用户下线有以下方式:

以RADIUS服务器通过DM报文强制用户下线为例,具体下线流程如图6所示:

portal认证技巧(Portal认证原理)(6)

图6 认证服务器强制用户下线流程图

  1. RADIUS服务器向接入设备发送用户下线请求(DM Request)。
  2. 接入设备向Portal服务器发送下线通知(NTF_LOGOUT),并将用户下线。同时,接入设备向RADIUS服务器发送下线响应(DM ACK)及停止计费请求报文(ACCOUNTING-REQUEST)。
  3. Portal服务器向接入设备发送用户下线响应报文(AFF_ACK_LOGOUT),并将用户下线。RADIUS服务器向接入设备发送停止计费响应报文(ACCOUNTING-RESPONSE),并将用户下线。

Portal服务器强制用户下线

当管理员注销用户或Portal服务器主动探测发现用户已经离线等事件发生时,Portal服务器将用户下线,并向接入设备发送下线通知。具体下线流程如图7所示。

portal认证技巧(Portal认证原理)(7)

图7 Portal服务器强制用户下线流程图

  1. Portal服务器向接入设备发送用户下线通知报文(REQ_LOGOUT)。
  2. 接入设备向RADIUS服务器发送停止计费请求报文(ACCOUNTING-REQUEST),并将用户下线。同时,接入设备向Portal服务器发送用户下线响应报文(ACK_LOGOUT)。
  3. Portal服务器收到用户下线响应后,将用户下线。
  4. RADIUS服务器返回停止计费响应报文(ACCOUNTING-RESPONSE),并将用户下线。
,