中國移動WLAN業務PORTAL協議規范介紹
一、用戶上線認證流程
上線流程完成用戶賬號的認證,並把認證結果通知Portal Server,Portal server將會通知WLAN用戶並且顯示相應的認證結果。
用戶上線認證方式有兩種:CHAP和PAP,其中CHAP方式為必選功能,PAP方式為可選功能。
1.1、用戶上線Chap認證流程
- 用戶訪問網站,經過AC重定向到Portal Server,Portal Server推送認證頁面;
- 用戶填入用戶名、密碼,提交頁面,向Portal Server發起連接請求;
- Portal Server向AC請求Challenge;
- AC分配Challenge給Portal Server;
- Portal Server向AC發起認證請求;
- 而后AC進行RADIUS認證,獲得RADIUS認證結果;
- AC向Portal Server送認證結果;
- Portal Server將認證結果填入頁面,和門戶網站一起推送給客戶;
- Portal Server回應確認收到認證結果的報文。
1.2、用戶上線Pap認證流程
- 用戶訪問網站,經過AC重定向到Portal Server,Portal Server推送認證頁面;
- 用戶填入用戶名、密碼,提交頁面,向Portal Server發起連接請求;
- Portal Server向AC發起認證請求;
- 而后AC進行RADIUS認證,獲得RADIUS認證結果;
- AC向Portal Server送認證結果;
- Portal Server將認證結果填入頁面,和門戶網站一起推送給客戶;
- Portal Server回應確認收到認證結果的報文。
二、用戶下線流程
用戶下線流程包括用戶主動發起下線流程,和用戶異常下線流程:AC偵測到用戶下線,主動通知Portal server。
2.1、用戶下線流程
- 用戶發起下線請求到Portal Server。
- Portal Server向AC請求下線。
- AC回應Portal Server下線請求。
- Portal Server推送下線結果頁面給用戶。
2.2、用戶異常下線流程
用戶異常下線流程:AC偵測用戶下線流程,主動通知Portal server。
- AC偵測到用戶下線,向Portal Server請求下線;
- Portal Server回應下線成功;
三、數據報文
3.1、報文格式
協議包采用固定長度頭加可變長度的屬性字段組成,屬性字段采用TLV格式,具體如下圖所示。
3.2、報文字段說明
Ver
Ver字段是協議的版本號,長度為 1 字節,目前定義的值為 0x01;
Type
Type字段定義報文的類型,長度為 1 字節,目前其值的如下圖所示
Pap/Chap
Pap/Chap字段定義此用戶的認證方式,長度為 1 字節,只對Type值為 0x03 的認證請求報文有意義:
-
- Chap方式認證,值:0x00
- Pap 方式認證,值:0x01
Rsv
Rsv目前為保留字段,長度為 1 字節,在所有報文中值為 0
SerialNo
(1)、SerialNo字段為報文的序列號,長度為 2 字節,由Portal Server隨機生成,Portal Server必須盡量保證不同認證流程的SerialNo在一定時間內不得重復,在同一個認證流程中所有報文的SerialNo相同;
(2)、Portal Server發給AC設備的報文
a、由Portal Server發出的Type值為1、3的請求報文其SerialNo都是隨機生成數;
b、由Portal Server向AC設備發出的Type值為5的(REQ_LOGOUT)報文其SerialNo值分兩中情況:當ErrCode為0 時(請求用戶下線報文),SerialNo值為一個隨機生成數;當ErrCode為1時,SerialNo值可能和Type值為1或3的報文 (請求Challenge超時, 或請求認證超時) 相同,具體要看是請求Challenge超時還是請求認證超時;
c、由Portal Server向AC設備發出的認證成功確認報文(Type值為7的報文)SerialNo和其發出的相應請求報文的SerrialNo相同;比如對於Type值為7的報文其SerialNo值和Type值為3的請求認證報文相同;
(3)、每一個由AC設備發給Portal Server的響應報文的SerialNo必須和Portal Server發送的相應請求報文的SerialNo一樣,否則Portal Server會丟掉從AC設備發來的響應報文; 比如Type值為2的報文其SerialNo值必須和Type值為1的報文相同,Type值為4的報文其SerialNo值必須和Type值為3的報文相同,Type值為6的報文其SerialNo值必須和Type值為5的報文相同。
ReqID
(1)、ReqID字段長度為 2 個字節,由AC設備隨機生成,盡量使得在一定時間內ReqID不重復。
(2)、在Chap認證方式中:
a、AC設備在Type為2 (ACK-CHALLENGE) 的請求Challenge響應報文中把該ReqID的值告訴Portal Server;
b、在Type值為3、4、7 ( REQ-AUTH, ACK-AUTH, AFF-ACK-AUTH ) 的報文中ReqID字段的值都和Type值為2的報文中此字段的值相同;
c、在Type值為 5 (REQ-LOGOUT) 的報文中,若報文表示請求Challenge 超時則此字段值為0 ;若報文表示請求認證超時則此字段值和Type值為2 (ACK-CHALLENGE)的報文中此字段的值相同;
(3)、在Pap認證方式中,此字段無意義,其值為0;
(4)、在Type值為 5 (REQ-LOGOUT) 的報文中,若報文表示請求下線時則此字段值為0 ;
(5)、在Type值為1、6 (REQ-CHALLENGE , ACK-LOGOUT) 的報文中,該字段均無意義,值都為 0;
UserIP
UserIP字段為Portal用戶的IP地址,長度為 4 字節,其值由Portal Server根據其獲得的IP地址填寫
在所有的報文中此字段都要有具體的值
UserPort
UserPort字段目前沒有用到,長度為 2 字節,在所有報文中其值為0
ErrCode
ErrCode字段和Type字段一起表示一定的意義,長度為 1字節,具體如下:
(1)、對於Type值為1、3、7的報文,ErrCode字段無意義,其值為0;
(2)、當Type值為 2 時:
ErrCode=0,表示AC設備告訴Portal Server請求Challenge成功;
ErrCode=1,表示AC設備告訴Portal Server請求Challenge被拒絕;
ErrCode=2,表示AC設備告訴Portal Server此鏈接已建立;
ErrCode=3,表示AC設備告訴Portal Server有一個用戶正在認證過程中,請稍后再試;
ErrCode=4,則表示AC設備告訴Portal Server此用戶請求Challenge失敗(發生錯誤);
(3)、當Type值為 4 時:
ErrCode=0,表示AC設備告訴Portal Server此用戶認證成功;
ErrCode=1,表示AC設備告訴Portal Server此用戶認證請求被拒絕;
ErrCode=2,表示AC設備告訴Portal Server此鏈接已建立;
ErrCode=3,表示AC設備告訴Portal Server有一個用戶正在認證過程中,請稍后再試;
ErrCode=4 ,表示AC設備告訴Portal Server此用戶認證失敗(發生錯誤);
(4)、當Type值為 5 時:
ErrCode=0,表示此報文是Portal Server發給AC設備的請求下線報文;
ErrCode=1,表示此報文是在Portal Server沒有收到AC設備發來的對各種請求的響應報文,而定時器時間到(即超時)時由Portal Server發給AC設備的報文;
(5)、當Type值為 6 時:
ErrCode=0,表示AC設備告訴Portal Server此用戶下線成功;
ErrCode=1,表示AC設備告訴Portal Server此用戶下線被拒絕;
ErrCode=2, 表示AC設備告訴Portal Server此用戶下線失敗(發生錯誤);
(6)、對Type為REQ_INFO時,ErrCode無意義,其值為0;
(7)、對Type為NTF_LOGOUT時,ErrCode含義如下:
(8)、對Type為ACK_INFO時,ErrCode含義如下:
AttrNum
AttrNum字段表示其后邊可變長度的屬性字段屬性的個數,長度為 1 字節(表示屬性字段最多可有255個屬性),其值在所有的報文中都要根據具體情況賦值。
Attr:報文屬性字段
Attr字段(屬性字段)是一個可變長字段,由多個屬性依次鏈接而成,每個屬性的格式為TLV格式。
整體的Attr可能由多個屬性TLV組成
報文屬性字段說明如下:
(1)、屬性類型(AttrType)
(2)、屬性長度(AttrLen)
AttrLen字段表示屬性的長度,長度為1字節,其值是整個屬性三個字段AttrType、AttrLen、AttrValue的長度之和。
(3)、屬性值(AttrValue)
AttrValue的值為具體的屬性值,比如用戶名、口令等,長度有些可變,有些固定(具體見表6.2),但最長不能超過253(255-2)字節。
四、參數
1、此協議規定承載報文的是UDP協議,也即報文為UDP報文,AC設備在固定端口2000(參照《BNAS寬帶接入服務器技術規范-YD1148》修訂)上等待接收Portal Server發來的各種請求報文和確認報文。
2、 PORTAL強制相關參數
當AC實現強制PORTAL功能時,要求在強制PORTAL URL中包含以下參數:
具體參數格式示例如下:
http://www.portal.com?wlanuserip=10.1.2.34&wlanacname= ACN.CTY.PRO.OPE
http://www.portal.com?wlanusername=IMSI@SIM
允許在”?”后面有其他的參數,但是名稱不能以wlan作為起始。
3、 Chap認證的相關說明:
(1)、challenge的生成(AC生成) :
challenge由AC設備在收到請求Challenge報文的時候隨機生成,長度為16個字節,跟隨Challenge應答報文下發到Portal Server。
(2)、Chap_Password(Chap密碼)的生成:
Chap_Password的生成遵循標准的Radious協議中的Chap_Password 生成方法(參見RFC2865)。
密碼加密使用MD5算法,MD5函數的輸入為ChapID + Password +Challenge (ReqID有AC生成, ChapID是ReqID的低8位)
其中,ChapID取ReqID的低 8 位,Password的長度不夠協議規定的最大長度,其后不需要補零。
Chap_Password = MD5 (ChapID+ Password + Challenge )
4、無論采用Chap認證還是Pap認證,都允許用戶口令為空;
5、當用戶向Portal Server提交的連接請求里用戶名為空時,Portal Server在向AC設備發送認證請求時應用一個缺省的用戶名代替(比如***);
6、認證流程中各種報文所帶屬性的個數(建議):
(1)、請求Challenge 報文:0個屬性;
(2)、對請求Challenge響應的報文:若請求Challenge成功則為1個屬性—Challenge屬性,若請求Challenge失敗則屬性個數為0個;
(3)、請求認證報文:2個屬性,分別為用戶名、PassWord 或ChapPassWord ;
(4)、對請求認證的響應報文:0個屬性;
(5)、請求下線報文或表示超時的報文:0個屬性;
(6)、對請求下線的響應報文:0個屬性;
(7)、Portal Server對收到從AC設備發來的認證成功報文的確認:0個屬性;
(8)、強制下線請求:0個屬性;
(9)、查詢請求和回應:待定;
7、報文的長度限制是最小16字節,最大1024(1K)字節;
8、從支持多國語言的角度出發,認證結果信息進行統一編碼,由Portal Server根據用戶語言上下文推送對應信息的頁面。