CXXXIV. Radius

Introduction

Ce paquetage est basé sur la libradius de FreeBSD. Ce PECL ajoute un support complet pour l'identification Radius (» RFC 2865) et les comptes Radius (» RFC 2866). Ce paquetage est disponible pour Unix (testé sous FreeBSD et Linux) et pour Windows.

Note: Une description exacte de la libradius peut être trouvée » ici. Une description détaillée du fichier de configuration peut être trouvée » ici.

Installation

Comment installer le paquetage ?

  • Décompresser le paquetage (habituellement dans php4/ext)
  • Renommer radius-x.x en radius
  • Exécuter ./buildconf dans php4
  • Exécuter ./configure --enable-radius
  • make; make install
ou, si vous voulez l'avoir en .so :
  • Décompresser le paquetage
  • Exécuter phpize dans le dossier radius-x.x
  • Exécuter ./configure dans le dossier radius-x.x
  • make; make install

Pour Windows, je vous recommande d'utiliser la bibliothèque php_radius.dll depuis » http://snaps.php.net/. Les extensions PECL non fournies par défaut peuvent être téléchargées depuis : » http://pecl4win.php.net/

Constantes pré-définies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

RADIUS_ACCESS_REQUEST ()
Demande d'identification
RADIUS_ACCESS_ACCEPT ()
Accès accepté
RADIUS_ACCESS_REJECT ()
Accès rejeté
RADIUS_ACCOUNTING_REQUEST ()
Demande de compte
RADIUS_ACCOUNTING_RESPONSE ()
Réponse du compte
RADIUS_ACCESS_CHALLENGE ()
Défi d'accès
RADIUS_USER_NAME (string)
Nom d'utilisateur
RADIUS_USER_PASSWORD (string)
Mot de passe
RADIUS_CHAP_PASSWORD (string)
Chap Password: chappass = md5(ident + plaintextpass + challenge)
RADIUS_NAS_IP_ADDRESS (string)
Adresse IP NAS
RADIUS_NAS_PORT (int)
Port NAS
RADIUS_SERVICE_TYPE (int)

Type de service :

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)

Protocole encadré :

RADIUS_PPP
RADIUS_SLIP
RADIUS_ARAP
RADIUS_GANDALF
RADIUS_XYLOGICS

RADIUS_FRAMED_IP_ADDRESS (string)
Adresse IP
RADIUS_FRAMED_IP_NETMASK (string)
Netmasque
RADIUS_FRAMED_ROUTING (int)
Routing
RADIUS_FILTER_ID (string)
Filter ID
RADIUS_FRAMED_MTU (int)
MTU
RADIUS_FRAMED_COMPRESSION (int)

Compression :

RADIUS_COMP_NONE
RADIUS_COMP_VJ
RADIUS_COMP_IPXHDR

RADIUS_LOGIN_IP_HOST (string)
Login IP Host
RADIUS_LOGIN_SERVICE (int)
Login Service
RADIUS_LOGIN_TCP_PORT (int)
Login TCP Port
RADIUS_REPLY_MESSAGE (string)
Message de réponse
RADIUS_CALLBACK_NUMBER (string)
Numéro de Callback
RADIUS_CALLBACK_ID (string)
ID de Callback
RADIUS_FRAMED_ROUTE (string)
Framed Route
RADIUS_FRAMED_IPX_NETWORK (string)
Framed IPX Network
RADIUS_STATE (string)
Statut
RADIUS_CLASS (int)
Classe
RADIUS_VENDOR_SPECIFIC (int)
Attribut spécifique au vendeur
RADIUS_SESSION_TIMEOUT (int)
Timeout de la session
RADIUS_IDLE_TIMEOUT (int)
Idle timeout
RADIUS_TERMINATION_ACTION (int)
Termination action
RADIUS_CALLED_STATION_ID (int)
Called Station Id
RADIUS_CALLING_STATION_ID (string)
Calling Station Id
RADIUS_NAS_IDENTIFIER (int)
NAS ID
RADIUS_PROXY_STATE (int)
Proxy State
RADIUS_LOGIN_LAT_SERVICE (int)
Login LAT Service
RADIUS_LOGIN_LAT_NODE (int)
Login LAT Node
RADIUS_LOGIN_LAT_GROUP (int)
Login LAT Group
RADIUS_FRAMED_APPLETALK_LINK (int)
Framed Appletalk Link
RADIUS_FRAMED_APPLETALK_NETWORK (int)
Framed Appletalk Network
RADIUS_FRAMED_APPLETALK_ZONE (int)
Framed Appletalk Zone
RADIUS_CHAP_CHALLENGE (string)
Challenge
RADIUS_NAS_PORT_TYPE (int)

Type du port 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)
Port Limit
RADIUS_LOGIN_LAT_PORT (int)
Login LAT Port
RADIUS_CONNECT_INFO (string)
Connect info
RADIUS_ACCT_STATUS_TYPE (int)

Type de statut du compte :

RADIUS_START
RADIUS_STOP
RADIUS_ACCOUNTING_ON
RADIUS_ACCOUNTING_OFF

RADIUS_ACCT_DELAY_TIME (int)
Accounting delay time
RADIUS_ACCT_INPUT_OCTETS (int)
Accounting input bytes
RADIUS_ACCT_OUTPUT_OCTETS (int)
Accounting output bytes
RADIUS_ACCT_SESSION_ID (int)
Accounting session ID
RADIUS_ACCT_AUTHENTIC (int)

Accounting authentic, one of:

RADIUS_AUTH_RADIUS
RADIUS_AUTH_LOCAL
RADIUS_AUTH_REMOTE

RADIUS_ACCT_SESSION_TIME (int)
Accounting session time
RADIUS_ACCT_INPUT_PACKETS (int)
Accounting input packets
RADIUS_ACCT_OUTPUT_PACKETS (int)
Accounting output packets
RADIUS_ACCT_TERMINATE_CAUSE (int)

Accounting terminate cause, one of:

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)
Accounting multi session ID
RADIUS_ACCT_LINK_COUNT (int)
Accounting link count
RADIUS_VENDOR_MICROSOFT (int)

Microsoft specific vendor attributes (» RFC 2548), one of:

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

Démarrage rapide

Comment commencer ?

  • Récupérer une ressource Radius
  • Configurer la bibliothèque
  • Créer une demande
  • Ajouter des attributs
  • Envoyer la demande
  • Recever les attributs
  • Fermer la ressource Radius (optionnel)
Regardez également les exemples fournis avec ce paquetage.

Ce paquetage contient un script PHP d'exemple. Ce script montre comment s'identifier avec Radius en utilisant PAP ou CHAP (md5). Si vous voulez vous identifier avec un serveur Microsoft Radius, alors il n'est pas possible d'utiliser CHAP (md5). Si vous voulez vous identifier avec un serveur Microsoft Radius, vous devez utiliser MS-CHAPv1 ou MS-CHAPv2 mais c'est plus compliqué, parce que vous avez besoin de md4, sha1 et DES pour générer de bonnes données. L'exemple fourni montre toutes les méthodes d'identification, incluant MS-CHAPv1 et MS-CHAPv2. Pour faire fonctionner MS-CHAP, vous aurez besoin des extensions mcrypt et mhash, et depuis la version 1.2 de ce paquetage, l'extension mcrypt n'est plus nécessaire.

Contact

Si vous avez des commentaires, des corrections de bogues, des améliorations ou si vous voulez aider dans le développement, vous pouvez envoyer un email à » mbretter@php.net. Les binaires Windows peuvent être téléchargés » ici.

Table des matières

radius_acct_open — Crée une ressource Radius pour les comptes
radius_add_server — Ajoute un serveur
radius_auth_open — Crée une ressource Radius pour l'identification
radius_close — Libère toutes les ressurces
radius_config — Demande à la bibliothèque de lire un fichier de configuration donné
radius_create_request — Crée une demande de compte ou d'identification
radius_cvt_addr — Convertit des données brutes en adresse IP
radius_cvt_int — Convertit des données brutes en entier
radius_cvt_string — Convertit des données brutes en chaîne de caractères
radius_demangle_mppe_key — Dérive les clés mppe depuis des données
radius_demangle — Assèche des données
radius_get_attr — Extrait un attribut
radius_get_vendor_attr — Extrait un attribut spécifique au vendeur
radius_put_addr — Attache une adresse IP en tant qu'attribut
radius_put_attr — Attache un attribut binaire
radius_put_int — Attache un attribut entier
radius_put_string — Attache un attribut chaîne de caractères
radius_put_vendor_addr — Attache un attribut IP-Address spécifique à un vendeur
radius_put_vendor_attr — Attache un attribut binaire à un vendeur spécifique
radius_put_vendor_int — Attache un attribut entier à un vendeur spécifique
radius_put_vendor_string — Attache un attribut sous la forme d'une chaîne à un vendeur spécifique
radius_request_authenticator — Retourne l'identificateur demandé
radius_send_request — Envoie la demande et attente une réponse
radius_server_secret — Retourne le secret partagé
radius_strerror — Retourne un message d'erreur