wifi認證Portal開發系列(三):portal協議


中國移動WLAN業務PORTAL協議規范介紹

 

一、用戶上線認證流程

上線流程完成用戶賬號的認證,並把認證結果通知Portal Server,Portal server將會通知WLAN用戶並且顯示相應的認證結果。

用戶上線認證方式有兩種:CHAP和PAP,其中CHAP方式為必選功能,PAP方式為可選功能。

1.1、用戶上線Chap認證流程

 

 

  1. 用戶訪問網站,經過AC重定向到Portal Server,Portal Server推送認證頁面;
  2. 用戶填入用戶名、密碼,提交頁面,向Portal Server發起連接請求;
  3. Portal Server向AC請求Challenge;
  4. AC分配Challenge給Portal Server;
  5. Portal Server向AC發起認證請求;
  6. 而后AC進行RADIUS認證,獲得RADIUS認證結果;
  7. AC向Portal Server送認證結果;
  8. Portal Server將認證結果填入頁面,和門戶網站一起推送給客戶;
  9. Portal Server回應確認收到認證結果的報文。

 1.2、用戶上線Pap認證流程

 

 

  1. 用戶訪問網站,經過AC重定向到Portal Server,Portal Server推送認證頁面;
  2. 用戶填入用戶名、密碼,提交頁面,向Portal Server發起連接請求;
  3. Portal Server向AC發起認證請求;
  4. 而后AC進行RADIUS認證,獲得RADIUS認證結果;
  5. AC向Portal Server送認證結果;
  6. Portal Server將認證結果填入頁面,和門戶網站一起推送給客戶;
  7. Portal Server回應確認收到認證結果的報文。

 

二、用戶下線流程

用戶下線流程包括用戶主動發起下線流程,和用戶異常下線流程:AC偵測到用戶下線,主動通知Portal server。

2.1、用戶下線流程

 

  1. 用戶發起下線請求到Portal Server。
  2. Portal Server向AC請求下線。
  3. AC回應Portal Server下線請求。
  4. Portal Server推送下線結果頁面給用戶。

2.2、用戶異常下線流程

用戶異常下線流程:AC偵測用戶下線流程,主動通知Portal server。

 

 

  1. AC偵測到用戶下線,向Portal Server請求下線;
  2. Portal Server回應下線成功;

三、數據報文

3.1、報文格式

協議包采用固定長度頭加可變長度的屬性字段組成,屬性字段采用TLV格式,具體如下圖所示。

3.2、報文字段說明

Ver

Ver字段是協議的版本號,長度為 1 字節,目前定義的值為 0x01;

Type

Type字段定義報文的類型,長度為 1 字節,目前其值的如下圖所示

 

Pap/Chap

Pap/Chap字段定義此用戶的認證方式,長度為 1 字節,只對Type值為 0x03 的認證請求報文有意義:

    1. Chap方式認證,值:0x00
    2. 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根據用戶語言上下文推送對應信息的頁面。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM