2024 年 PHP 日本會議

RADIUS 屬性類型

這些常數定義了可以與 radius_put_addr()radius_put_attr()radius_put_int()radius_put_string() 一起使用的 RADIUS 屬性類型。

RADIUS_USER_NAME (int)

使用者名稱屬性。屬性值應為包含正在驗證的使用者名稱的 字串,可以使用 radius_put_attr() 設定。

RADIUS_USER_PASSWORD (int)

使用者密碼屬性 (User-Password attribute)。屬性值應為包含使用者密碼的字串,可以使用 radius_put_attr() 函式設定。此值在傳輸過程中將會被遮蔽,如 » RFC 2865 的 5.2 節 所述。

RADIUS_CHAP_PASSWORD (整數)

CHAP 密碼屬性 (Chap-Password attribute)。屬性值應為字串,第一個位元組包含 CHAP 識別碼,後續 16 個位元組包含 CHAP 識別碼、明文密碼和 CHAP challenge 值串連在一起的 MD5 雜湊值。請注意,CHAP challenge 值也應該在 RADIUS_CHAP_CHALLENGE 屬性中單獨發送。

範例 #1 使用 CHAP 密碼

<?php
// 首先,我們會建立一個驗證 handle 和請求。
$radh = radius_auth_open();
radius_add_server($radh, $server, $port, $secret, 3, 3);
radius_create_request($radh, RADIUS_ACCESS_REQUEST);

// 假設 $password 包含明文密碼,我們現在:

// 產生一個挑戰。
$challenge = mt_rand();

// 指定 CHAP 識別碼。
$ident = 1;

// 加入 Chap-Password 屬性。
$cp = hash('md5', pack('Ca*', $ident, $password.$challenge), true);
radius_put_attr($radh, RADIUS_CHAP_PASSWORD, pack('C', $ident).$cp);

// 加入 Chap-Challenge 屬性。
radius_put_attr($radh, RADIUS_CHAP_CHALLENGE, $challenge);

/* 從這裡開始,您應該加入其餘的屬性並
* 呼叫 radius_send_request()。 */
?>

RADIUS_NAS_IP_ADDRESS (整數)

NAS-IP-Address 屬性。屬性值應為 RADIUS 用戶端之 IP 位址,編碼為整數,可以使用 radius_put_addr() 設定。

RADIUS_NAS_PORT (整數)

NAS-Port 屬性。屬性值應為 RADIUS 用戶端上使用者之實體連接埠,編碼為整數,可以使用 radius_put_int() 設定。

RADIUS_SERVICE_TYPE (整數)

Service-Type 屬性。屬性值指示使用者請求的服務類型,預期為整數,可以使用 radius_put_int() 設定。

提供了許多常數來表示此屬性的可能值。它們包含:

RADIUS_FRAMED_PROTOCOL (int 整數)

Framed-Protocol(框架協議)屬性。屬性值應為一個 int 整數,表示用於框架式存取的框架類型,可以使用 radius_put_int() 函式設定。可能的屬性值包含以下常數:

RADIUS_FRAMED_IP_ADDRESS (int 整數)

Framed-IP-Address(框架式 IP 位址)屬性。屬性值應為使用者網路的位址,編碼為 int 整數,可以使用 radius_put_addr() 函式設定,並使用 radius_cvt_addr() 函式擷取。

RADIUS_FRAMED_IP_NETMASK (int 整數)

Framed-IP-Netmask(框架式 IP 網路遮罩)屬性。屬性值應為使用者網路的網路遮罩,編碼為 int 整數,可以使用 radius_put_addr() 函式設定,並使用 radius_cvt_addr() 函式擷取。

RADIUS_FRAMED_ROUTING (int 整數)

Framed-Routing(框架式路由)屬性。屬性值應為一個 int 整數,表示使用者的路由方法,可以使用 radius_put_int() 函式設定。

可能的值包含:

  • 0:無路由
  • 1:傳送路由封包
  • 2:監聽路由封包
  • 3:傳送和監聽

RADIUS_FILTER_ID (int 整數)

Filter-ID(過濾器 ID)屬性。屬性值應為一個實現特定的、人類可讀的過濾器 string 字串,可以使用 radius_put_attr() 函式設定。

RADIUS_FRAMED_MTU (int 整數)

Framed-MTU(框架式最大傳輸單元)屬性。屬性值應為一個 int 整數,表示要為使用者設定的 MTU,可以使用 radius_put_int() 函式設定。

RADIUS_FRAMED_COMPRESSION (int 整數)

Framed-Compression(框架式壓縮)屬性。屬性值應為一個 int 整數,表示要使用的壓縮協定,可以使用 radius_put_int() 函式設定。可能的值包含以下常數:

RADIUS_LOGIN_IP_HOST (整數)

Login-IP-Host 屬性。屬性值預期為連線使用者的 IP 位址,編碼為 整數,可以使用 radius_put_addr() 函式設定。

RADIUS_LOGIN_SERVICE (整數)

Login-Service 屬性。屬性值為 整數,表示要在登入主機上連線的服務。該值可以透過 radius_cvt_int() 函式轉換為 PHP 整數。

RADIUS_LOGIN_TCP_PORT (整數)

Login-TCP-Port 屬性。屬性值為 整數,表示要在登入主機上連線的連接埠。該值可以透過 radius_cvt_int() 函式轉換為 PHP 整數。

RADIUS_REPLY_MESSAGE (整數)

Reply-Message 屬性。屬性值為 字串,包含可能顯示給使用者以回應存取請求的文字。

RADIUS_CALLBACK_NUMBER (整數)

Callback-Number 屬性。屬性值為 字串,包含用於回撥的撥號字串。

RADIUS_CALLBACK_ID (整數)

Callback-Id 屬性。屬性值為 字串,包含要呼叫位置的實作特定名稱。

RADIUS_FRAMED_ROUTE (整數)

Framed-Route 屬性。屬性值為 字串,包含要為使用者設定的實作特定路由集合。

RADIUS_FRAMED_IPX_NETWORK (整數)

Framed-IPX-Network 屬性。屬性值為 整數,包含要為使用者設定的 IPX 網路,或 0xFFFFFFFE 表示 RADIUS 用戶端應選擇網路,並且可以透過 radius_cvt_int() 函式存取。

RADIUS_STATE (整數)

State 屬性。屬性值為實作定義的 字串,包含在伺服器發出的 Access-Challenge 中,必須包含在後續的 Access-Request 中,並且可以使用 radius_put_attr() 函式設定。

RADIUS_CLASS (整數 (int))

Class 屬性。此屬性值是一個任意字串 (string),包含在 Access-Accept 訊息中,之後應在 Accounting-Request 訊息中發送至記帳伺服器,可以使用 radius_put_attr() 函式設定。

RADIUS_VENDOR_SPECIFIC (整數 (int))

廠商專屬屬性。一般來說,廠商屬性值應使用 radius_put_vendor_addr()radius_put_vendor_attr()radius_put_vendor_int()radius_put_vendor_string() 函式設定,而不是直接設定。

這個常數主要用於解讀從 RADIUS 伺服器回應中收到的廠商專屬屬性;當收到廠商專屬屬性時,應使用 radius_get_vendor_attr() 函式來存取廠商 ID、屬性類型和屬性值。

RADIUS_SESSION_TIMEOUT (整數 (int))

工作階段逾時

RADIUS_IDLE_TIMEOUT (整數 (int))

閒置逾時

RADIUS_TERMINATION_ACTION (整數 (int))

終止動作

RADIUS_CALLED_STATION_ID (整數 (int))

被叫端站台 ID

RADIUS_CALLING_STATION_ID (整數 (int))

主叫端站台 ID

RADIUS_NAS_IDENTIFIER (整數 (int))

NAS ID

RADIUS_PROXY_STATE (整數 (int))

代理伺服器狀態

RADIUS_LOGIN_LAT_SERVICE (整數 (int))

登入 LAT 服務

RADIUS_LOGIN_LAT_NODE (整數 (int))

登入 LAT 節點

RADIUS_LOGIN_LAT_GROUP (整數 (int))

登入 LAT 群組

框架式 AppleTalk 連結

RADIUS_FRAMED_APPLETALK_NETWORK (整數 (int))

框架式 AppleTalk 網路

RADIUS_FRAMED_APPLETALK_ZONE (整數 (int))

框架式 AppleTalk 區域

RADIUS_CHAP_CHALLENGE (整數 (int))

挑戰

RADIUS_NAS_PORT_TYPE (整數 (int))

NAS 連接埠類型,以下其中之一:

RADIUS_PORT_LIMIT (整數 (int))

連接埠限制

RADIUS_LOGIN_LAT_PORT (整數 (int))

登入 LAT 連接埠

RADIUS_CONNECT_INFO (整數 (int))

連線資訊

RADIUS_ACCT_STATUS_TYPE (整數 (int))

帳務狀態類型,以下其中之一:

RADIUS_ACCT_DELAY_TIME (整數 (int))

帳務延遲時間

RADIUS_ACCT_INPUT_OCTETS (整數 (int))

帳務輸入位元組數

RADIUS_ACCT_OUTPUT_OCTETS (整數 (int))

帳務輸出位元組數

RADIUS_ACCT_SESSION_ID (整數 (int))

帳務工作階段 ID

RADIUS_ACCT_AUTHENTIC (整數 (int))

帳務驗證方式,以下其中之一:

RADIUS_ACCT_SESSION_TIME (整數 (int))

帳務工作階段時間

RADIUS_ACCT_INPUT_PACKETS (整數 (int))

帳務輸入封包數

RADIUS_ACCT_OUTPUT_PACKETS (整數 (int))

帳務輸出封包數

RADIUS_ACCT_TERMINATE_CAUSE (整數 (int))

帳務終止原因,以下其中之一:

RADIUS_ACCT_MULTI_SESSION_ID (整數 (int))

帳務多重工作階段 ID

帳務連結計數

服務類型常數
RADIUS_LOGIN
RADIUS_FRAMED
RADIUS_CALLBACK_LOGIN
RADIUS_CALLBACK_FRAMED
RADIUS_OUTBOUND
RADIUS_ADMINISTRATIVE
RADIUS_NAS_PROMPT
RADIUS_AUTHENTICATE_ONLY
RADIUS_CALLBACK_NAS_PROMPT(RADIUS 回叫 NAS 提示)
框架協議常數
RADIUS_PPP
RADIUS_SLIP
RADIUS_ARAP
RADIUS_GANDALF
RADIUS_XYLOGICS
框架壓縮常數
RADIUS_COMP_NONE(無壓縮)
RADIUS_COMP_VJ(VJ 壓縮)
RADIUS_COMP_IPXHDR(IPX 標頭壓縮)
RADIUS_COMP_STAC_LZS
NAS 連接埠類型常數
RADIUS_ASYNC(非同步)
RADIUS_SYNC(同步)
RADIUS_ISDN_SYNC(ISDN 同步)
RADIUS_ISDN_ASYNC_V120(ISDN 非同步 V120)
RADIUS_ISDN_ASYNC_V110(ISDN 非同步 V110)
RADIUS_VIRTUAL(虛擬)
RADIUS_PIAFS(PIAFS)
RADIUS_HDLC_CLEAR_CHANNEL(HDLC 透明通道)
RADIUS_X_25(X.25)
RADIUS_X_75(X.75)
RADIUS_G_3_FAX(G.3 傳真)
RADIUS_SDSL(SDSL)
RADIUS_ADSL_CAP(ADSL CAP)
RADIUS_ADSL_DMT(ADSL DMT)
RADIUS_IDSL(IDSL)
RADIUS_ETHERNET(乙太網路)
RADIUS_XDSL(xDSL)
RADIUS_CABLE(纜線)
RADIUS_WIRELESS_OTHER(其他無線網路)
RADIUS_WIRELESS_IEEE_802_11(IEEE 802.11 無線網路)
帳務狀態類型常數
RADIUS_START(開始)
RADIUS_STOP(停止)
RADIUS_ACCOUNTING_ON(帳務開啟)
RADIUS_ACCOUNTING_OFF(帳務關閉)
帳務驗證常數
RADIUS_AUTH_RADIUS(RADIUS 驗證)
RADIUS_AUTH_LOCAL(本地驗證)
RADIUS_AUTH_REMOTE(遠端驗證)
帳務終止原因常數
RADIUS_TERM_USER_REQUEST(使用者請求)
RADIUS_TERM_LOST_CARRIER(失去載波)
RADIUS_TERM_LOST_SERVICE(失去服務)
RADIUS_TERM_IDLE_TIMEOUT(閒置逾時)
RADIUS_TERM_SESSION_TIMEOUT(工作階段逾時)
RADIUS_TERM_ADMIN_RESET(管理員重置)
RADIUS_TERM_ADMIN_REBOOT(管理員重新啟動)
RADIUS_TERM_PORT_ERROR(連接埠錯誤)
RADIUS_TERM_NAS_ERROR(NAS 錯誤)
RADIUS_TERM_NAS_REQUEST(NAS 請求)
RADIUS_TERM_NAS_REBOOT(NAS 重新啟動)
RADIUS_TERM_PORT_UNNEEDED(連接埠不需要)
RADIUS_TERM_PORT_PREEMPTED(連接埠被搶佔)
RADIUS_TERM_PORT_SUSPENDED(連接埠被暫停)
RADIUS_TERM_SERVICE_UNAVAILABLE(服務不可用)
RADIUS_TERM_CALLBACK(回撥)
RADIUS_TERM_USER_ERROR(使用者錯誤)
RADIUS_TERM_HOST_REQUEST(主機請求)
新增註釋

使用者貢獻的註釋 1 則註釋

3
匿名
9 年前
要修正缺少 Acct-Status-Type 的「Alive」,只需

define('RADIUS_ALIVE', 3);
To Top