У меня есть CISCO, и я хочу аутентифицировать пользователей с RADIUS, используя PHP. У CISCO есть собственный поставщик и атрибуты, и я должен установить их в своих скриптах PHP. я использую PECL RADIUS API.
Это мой пример кода:
$radius = radius_auth_open();
radius_add_server($radius, $ip_address, $port, $shared_secret, 5, 3);
radius_create_request($radius, RADIUS_ACCESS_REQUEST);
// How to set CISCO attributes here?
$result = radius_send_request($radius);
я пробовал radius_put_attr
, radius_put_string
, radius_put_vendor_attr
, radius_put_vendor_string
и другие методы, но ни один из них не работает.
Я пробовал другую библиотеку с открытым исходным кодом (Чистый PHP Радиус), который использует Sockets и UDP для связи с сервером RADIUS, но я также не могу установить свои собственные атрибуты.
Там не достаточно примеров, поэтому любая помощь будет оценена.
$radius = radius_auth_open();
radius_add_server($radius, "172.17.10.1",1812, "12345", 5, 3);
radius_create_request($radius, RADIUS_ACCESS_REQUEST);
radius_put_attr($radius, RADIUS_USER_PASSWORD, "mouse");
radius_put_vendor_attr ( $radius , 9 , 250 , "S115.12.11.10" );
radius_put_attr ( $radius , RADIUS_USER_NAME , "testusername" ) ;
radius_put_addr ($radius,RADIUS_NAS_IP_ADDRESS,"172.17.10.9");
radius_put_attr ( $radius , 87 , "0x0" );
radius_put_vendor_attr ( $radius , 9 , 249 , "mypassword" );
radius_put_vendor_attr ( $radius , 9 , 252 , "\001" );
radius_put_vendor_string ( $radius , 9 , 250 , "S115.12.11.10" );
$result = radius_send_request($radius);
switch ($result) {
case RADIUS_ACCESS_ACCEPT:
// An Access-Accept response to an Access-Request indicating that the RADIUS server authenticated the user successfully.
echo 'Authentication successful';
break;
case RADIUS_ACCESS_REJECT:
// An Access-Reject response to an Access-Request indicating that the RADIUS server could not authenticate the user.
echo 'Authentication failed';
break;
case RADIUS_ACCESS_CHALLENGE:
// An Access-Challenge response to an Access-Request indicating that the RADIUS server requires further information in another Access-Request before authenticating the user.
echo 'Challenge required';
break;
default:
die('A RADIUS error has occurred: ' . radius_strerror($radius));
}
Ниже приведено описание пользовательских атрибутов Cisco.
250-> Cisco-Account-Info
252-> Командный код Cisco
249-> Cisco-Subscriber-Password
87-> NAS-Port-ID
http://docstore.mik.ua/univercd/cc/td/doc/product/access/acs_serv/6510ssg/6510sw11/app_d_rd.htm
Других решений пока нет …