Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
PHP: radius - Manual
[go: Go Back, main page]

PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

radius_acct_open" width="11" height="7"/> <qdom_tree
Last updated: Sun, 25 Nov 2007

view this page in

Radius

導入

このパッケージは、FreeBSD の libradius をもとにしたものです。 この PECL モジュールは、Radius 認証 (» RFC 2865) および Radius 課金 (» RFC 2866) を完全にサポートします。 このパッケージは、Unix (FreeBSD および Linux でテストしました) および Windows で使用可能です。

注意: libradius に関する正確な説明は» ここ にあります。設定ファイルについての詳細な説明は » ここです。

インストール手順

どうやってインストールするの?

  • tar パッケージを (通常は php4/ext に) 展開する
  • radius-x.x の名前を radius に変更する
  • php4 ディレクトリで ./buildconf を実行する
  • ./configure --enable-radius を実行する
  • make; make install
あるいは、もし .so 形式にしたければ
  • tar パッケージを展開する
  • radius-x.x ディレクトリで phpize を実行する
  • radius-x.x ディレクトリで ./configure を実行する
  • make; make install

Windows の場合は、 » http://snaps.php.net/ から php_radius.dll をダウンロードして使用することを推奨します。 バンドルされていない PECL 拡張モジュールは » http://pecl4win.php.net/ からダウンロードできます。

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

RADIUS_ACCESS_REQUEST ()
認証のリクエスト
RADIUS_ACCESS_ACCEPT ()
アクセスが許可されました
RADIUS_ACCESS_REJECT ()
アクセスが拒否されました
RADIUS_ACCOUNTING_REQUEST ()
課金のリクエスト
RADIUS_ACCOUNTING_RESPONSE ()
課金のレスポンス
RADIUS_ACCESS_CHALLENGE ()
アクセスチャレンジ
RADIUS_USER_NAME (string)
ユーザ名
RADIUS_USER_PASSWORD (string)
パスワード
RADIUS_CHAP_PASSWORD (string)
Chap パスワード。 chappass = md5(ident + plaintextpass + challenge)
RADIUS_NAS_IP_ADDRESS (string)
NAS IP アドレス
RADIUS_NAS_PORT (int)
NAS ポート
RADIUS_SERVICE_TYPE (int)

サービスの型、以下のいずれか

  • 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_FRAMED_PROTOCOL (int)

フレームのプロトコル、以下のいずれか

  • RADIUS_PPP
  • RADIUS_SLIP
  • RADIUS_ARAP
  • RADIUS_GANDALF
  • RADIUS_XYLOGICS

RADIUS_FRAMED_IP_ADDRESS (string)
IP アドレス
RADIUS_FRAMED_IP_NETMASK (string)
ネットマスク
RADIUS_FRAMED_ROUTING (int)
ルーティング
RADIUS_FILTER_ID (string)
フィルタ ID
RADIUS_FRAMED_MTU (int)
MTU
RADIUS_FRAMED_COMPRESSION (int)

圧縮、以下のいずれか

  • RADIUS_COMP_NONE
  • RADIUS_COMP_VJ
  • RADIUS_COMP_IPXHDR

RADIUS_LOGIN_IP_HOST (string)
ログイン IP ホスト
RADIUS_LOGIN_SERVICE (int)
ログインサービス
RADIUS_LOGIN_TCP_PORT (int)
ログイン TCP ポート
RADIUS_REPLY_MESSAGE (string)
応答メッセージ
RADIUS_CALLBACK_NUMBER (string)
コールバック番号
RADIUS_CALLBACK_ID (string)
コールバック ID
RADIUS_FRAMED_ROUTE (string)
フレームのルート
RADIUS_FRAMED_IPX_NETWORK (string)
フレームの IPX ネットワーク
RADIUS_STATE (string)
状態
RADIUS_CLASS (int)
クラス
RADIUS_VENDOR_SPECIFIC (int)
ベンダ固有の属性
RADIUS_SESSION_TIMEOUT (int)
セッションタイムアウト
RADIUS_IDLE_TIMEOUT (int)
アイドルタイムアウト
RADIUS_TERMINATION_ACTION (int)
停止アクション
RADIUS_CALLED_STATION_ID (int)
呼び出し先ステーション ID
RADIUS_CALLING_STATION_ID (string)
呼び出し元ステーション ID
RADIUS_NAS_IDENTIFIER (int)
NAS ID
RADIUS_PROXY_STATE (int)
Proxy の状態
RADIUS_LOGIN_LAT_SERVICE (int)
ログイン LAT サービス
RADIUS_LOGIN_LAT_NODE (int)
ログイン LAT ノード
RADIUS_LOGIN_LAT_GROUP (int)
ログイン LAT グループ
RADIUS_FRAMED_APPLETALK_LINK (int)
フレームの Appletalk リンク
RADIUS_FRAMED_APPLETALK_NETWORK (int)
フレームの Appletalk ネットワーク
RADIUS_FRAMED_APPLETALK_ZONE (int)
フレームの Appletalk ゾーン
RADIUS_CHAP_CHALLENGE (string)
チャレンジ
RADIUS_NAS_PORT_TYPE (int)

NAS ポート型、以下のいずれか

  • RADIUS_ASYNC
  • RADIUS_SYNC
  • RADIUS_ISDN_SYNC
  • RADIUS_ISDN_ASYNC_V120
  • RADIUS_ISDN_ASYNC_V110
  • RADIUS_VIRTUAL
  • RADIUS_PIAFS
  • RADIUS_HDLC_CLEAR_CHANNEL
  • RADIUS_X_25
  • RADIUS_X_75
  • RADIUS_G_3_FAX
  • RADIUS_SDSL
  • RADIUS_ADSL_CAP
  • RADIUS_ADSL_DMT
  • RADIUS_IDSL
  • RADIUS_ETHERNET
  • RADIUS_XDSL
  • RADIUS_CABLE
  • RADIUS_WIRELESS_OTHER
  • RADIUS_WIRELESS_IEEE_802_11

RADIUS_PORT_LIMIT (int)
ポートの限界
RADIUS_LOGIN_LAT_PORT (int)
ログイン LAT ポート
RADIUS_CONNECT_INFO (string)
接続の情報
RADIUS_ACCT_STATUS_TYPE (int)

課金状態の型、以下のいずれか

  • RADIUS_START
  • RADIUS_STOP
  • RADIUS_ACCOUNTING_ON
  • RADIUS_ACCOUNTING_OFF

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_AUTH_RADIUS
  • RADIUS_AUTH_LOCAL
  • RADIUS_AUTH_REMOTE

RADIUS_ACCT_SESSION_TIME (int)
課金のセッション時間
RADIUS_ACCT_INPUT_PACKETS (int)
課金の入力パケット
RADIUS_ACCT_OUTPUT_PACKETS (int)
課金の出力パケット
RADIUS_ACCT_TERMINATE_CAUSE (int)

課金終了の原因、以下のいずれか

  • 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
  • RADIUS_TERM_NAS_REQUEST
  • RADIUS_TERM_NAS_REBOOT
  • 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

RADIUS_ACCT_MULTI_SESSION_ID (string)
課金のマルチセッション ID
RADIUS_ACCT_LINK_COUNT (int)
課金のリンク数
RADIUS_VENDOR_MICROSOFT (int)

Microsoft 固有のベンダ属性 (» RFC 2548)、 以下のいずれか

  • RADIUS_MICROSOFT_MS_CHAP_RESPONSE
  • RADIUS_MICROSOFT_MS_CHAP_ERROR
  • RADIUS_MICROSOFT_MS_CHAP_PW_1
  • RADIUS_MICROSOFT_MS_CHAP_PW_2
  • RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW
  • RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW
  • RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY
  • RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES
  • RADIUS_MICROSOFT_MS_RAS_VENDOR
  • RADIUS_MICROSOFT_MS_CHAP_DOMAIN
  • RADIUS_MICROSOFT_MS_CHAP_CHALLENGE
  • RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS
  • RADIUS_MICROSOFT_MS_BAP_USAGE
  • RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD
  • RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT
  • RADIUS_MICROSOFT_MS_MPPE_SEND_KEY
  • RADIUS_MICROSOFT_MS_MPPE_RECV_KEY
  • RADIUS_MICROSOFT_MS_RAS_VERSION
  • RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD
  • RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD
  • RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON
  • RADIUS_MICROSOFT_MS_FILTER
  • RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE
  • RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE
  • RADIUS_MICROSOFT_MS_CHAP2_RESPONSE
  • RADIUS_MICROSOFT_MS_CHAP2_SUCCESS
  • RADIUS_MICROSOFT_MS_CHAP2_PW
  • RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER
  • RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER
  • RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER
  • RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER
  • RADIUS_MICROSOFT_MS_ARAP_CHALLENGE

クイックスタート

どのように使用するの?

  • radius リソースを取得する
  • ライブラリを設定する
  • リクエストを作成する
  • 属性を設定する
  • リクエストを送信する
  • 属性を受け取る
  • radius リソースを閉じる (オプション)
パッケージに含まれている例もごらんください。

このパッケージにはサンプル PHP スクリプトが含まれています。 このスクリプトでは、PAP あるいは CHAP (md5) を使用した radius 認証の 方法を説明しています。Microsoft Radius サーバを使用して認証を行う 場合は、CHAP (md5) を使用することはできません。Microsoft のサーバを 使用する場合は、MS-CHAPv1 あるいは MS-CHAPv2 を使用する必要があります。 しかし、正しいデータを生成するために md4、sha1 および des が必要となる こともあり、これは複雑な手順となります。同梱されている例では すべての認証方式を説明しており、そこには MS-CHAPv1 および MS-CHAPv2 も含まれています。MS-CHAP を動作させるためには、拡張モジュール mcrypt および mhash が必要となります。 バージョン 1.2 以降では、mcrypt 拡張モジュールは必要なくなりました。

連絡先の情報

コメント・バグフィックス・機能拡張・あるいは開発を手伝いたいなどの場合は、 メールを » mbretter@php.net に送ってください。Windows 用のバイナリは » ここから ダウンロードできます。

目次



radius_acct_open" width="11" height="7"/> <qdom_tree
Last updated: Sun, 25 Nov 2007
 
add a note add a note User Contributed Notes
radius
SysCo/al - developer [at] sysco[dot] ch
07-Jan-2008 10:39
Pure PHP radius class (do not need the radius package !)

We have implemented a pure PHP radius class following the RFC 2865 rules. Using this class, it is also possible to do WWW realm authentication.

Class abstract, full class implementation (LGPL) with helper files and examples can be found at http://developer.sysco.ch/php/

<?php

// (...)

class Radius
{
   
// (...)

   
public function Radius($ip_radius_server = '127.0.0.1', $shared_secret = '', $radius_suffix = '', $udp_timeout = 5, $authentication_port = 1812, $accounting_port = 1813)
    {
       
// (...)
   
}

   
// (...)

   
function AccessRequest($username = '', $password = '', $udp_timeout = 0)
    {

       
// (...)

       
$_socket_to_server = socket_create(AF_INET, SOCK_DGRAM, 17); // UDP packet = 17
       
       
if ($_socket_to_server === FALSE)
        {
           
// (...)
       
}
        elseif (
FALSE === socket_connect($_socket_to_server, $this->_ip_radius_server, $this->_authentication_port))
        {
           
// (...)
       
}
        elseif (
FALSE === socket_write($_socket_to_server, $packet_data, $packet_length))
        {
           
// (...)
       
}
        else
        {
           
// (...)
           
$read_socket_array   = array($_socket_to_server);
           
$write_socket_array  = NULL;
           
$except_socket_array = NULL;

           
$received_packet = chr(0);

            if (!(
FALSE === socket_select($read_socket_array, $write_socket_array, $except_socket_array, $this->_udp_timeout)))
            {
                if (
in_array($_socket_to_server, $read_socket_array))
                {
                    if (
FALSE === ($received_packet = @socket_read($_socket_to_server, 1024))) // @ used, than no error is displayed if the connection is closed by the remote host
                   
{
                       
// (...)
                   
}
                    else
                    {
                       
socket_close($_socket_to_server);
                    }
                }
            }
            else
            {
               
socket_close($_socket_to_server);
            }
        }

       
// (...)
       
       
return (2 == ($this->_radius_packet_received));
    }
}

?>

Example
<?php
   
require_once('radius.class.php');
   
$radius = new Radius('127.0.0.1', 'secret');
    if (
$radius->AccessRequest('user', 'pass'))
    {
        echo
"Authentication accepted.";
    }
    else
    {
        echo
"Authentication rejected.";
    }
?>
andac dot aydin at code64 dot de
08-Jul-2006 12:32
If you are constantly getting the errormessage:

Fatal error: Unknown function: radius_auth_open() in...

And your Server is a Windows-System (for example standard-xampp installation), you propably did not remove the comment symbol ";" in front of "extension=php_radius.dll" in php.ini.

If you did that, but get the error anyway:

Additionally be sure you edited the right php.ini, since xampp installs several php.exe's but only "xampp/apache/bin/php.ini"  is the correct one!

It did cost me 2 days to find that out!
shaun at verticalevolution dot com
28-Apr-2006 12:03
To expand on the simple example by jengo at phpgroupware dot org you can add a NAS IP address to the request by using:

radius_put_addr($radius, RADIUS_NAS_IP_ADDRESS, '127.0.0.1');

and not radius_put_attr or radius_put_string. I also had to use radius_put_string for the user name and password.
brett at silcon dot com
14-Jan-2006 03:20
Here's a longer example that DOES do Challenge Response and works with SecurID Authentication Managers.

http://www.webtrotter.com/securid_radius.txt

(script wouldn't let me post it because of the long lines, plus it was too long of an example).
jengo at phpgroupware dot org
24-Oct-2005 12:26
Here is a simple example on how to auth against radius.  Note:  This doesn't handle challenge responses.

    $radius = radius_auth_open();
    if (! radius_add_server($radius,'localhost',0,'radiussecret',5,3))
    {
        die('Radius Error: ' . radius_strerror($radius));
    }

    if (! radius_create_request($radius,RADIUS_ACCESS_REQUEST))
    {
        die('Radius Error: ' . radius_strerror($radius));
    }

    radius_put_attr($radius,RADIUS_USER_NAME,'username');
    radius_put_attr($radius,RADIUS_USER_PASSWORD,'password');

    switch (radius_send_request($radius))
    {
        case RADIUS_ACCESS_ACCEPT:
            echo 'GOOD LOGIN';
            break;
        case RADIUS_ACCESS_REJECT:
            echo 'BAD LOGIN';
            break;
        case RADIUS_ACCESS_CHALLENGE:
            echo 'CHALLENGE REQUESTED';
            break;
        default:
            die('Radius Error: ' . radius_strerror($radius));
    }

radius_acct_open" width="11" height="7"/> <qdom_tree
Last updated: Sun, 25 Nov 2007
 
 
show source | credits | sitemap | contact | advertising | mirror sites