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