Перейти к содержимому
Калькуляторы

Посоветуйте, как лучше сделать Авторизация на доп.сервисе, основывающаяся на биллинге

Есть биллинговая система, включающая в себя RADIUS-сервер.

Данные хранятся в СУБД Oracle.

Оба сервера (и биллинг, и БД) работают под управлением RHLE (64-битной).

 

Есть сервер, обслуживающий хотспот (управление хотспотом, DHCP, DNS, прокси и т.п.).

Доступ к хотспоту должен предоставляться только тем пользователям, у которых в биллинге подключена определенная тарифная опция.

Скрипт авторизации клиентов хотспота сделан на PHP. При авторизации клиента на портале хотспота нужно проверить, подключена ли у соответствующего абонента в биллинге тарифная опция. Если подключена, то авторизовать, если не подключена, то отказать в регистрации.

Сервер работает под управлением FreeBSD 8.2 (64-битной).

 

Проблема заключается в том, что для 64-разрядной FreeBSD не существует клиента Oracle.

Соответственно подключиться к БД и проверить абонента нельзя.

 

Пока что я только четыре способа нашел решить эту проблему.

 

1. Для FreeBSD все же существует клиент Oracle для JDBC (для работы ява-приложений). То есть можно установить ява-машину, JDBC, и в скрипте подключаться к БД через JDBC.

Вариант вроде бы рабочий, но уж очень костыльный. Да и на PHP работать с JDBC не очень просто.

 

2. На сервере СУБД Oracle имеется DBI-Proxy. Можно написать на Perl скрипт, который будет подключаться через dbiproxy к биллинговой БД, загружать нужные данные (список абонентов с подключенной опцией) в локальную БД. А скрипт авторизации будет подключаться уже к локальной БД. У такого подхода есть и некоторые плюсы (у веб-сервера не будет связи с биллинговой БД на случай если в коде будут уязвимости), но основной минус с том, что актуальные данные будут запаздывать. Если скрипт синхронизации будет запускаться (к примеру) каждый час, значит в худшем случае абонент после подключения опции не сможет подключиться к хотспоту в течении почти часа.

 

3. На сервере FreeBSD установить линукслятор (или другой подобный эмулятор Linux) и использовать Oracle-клиент для Linux. Все вроде бы хорошо, но у меня так и не получилось из скрипта использовать линуксовый Oracle-клиент. То ли под эмулятором должно быть все, что использует клиент (в том числе PHP с Apache), то ли еще что, но не работает.

 

4. В скрипте авторизации можно проверять наличие нужной услуги у абонента не в БД, а через RADIUS-сервер. То есть я из скрипта авторизации шлю RADIUS-запрос к биллингу и в зависимости от ответа авторизовать абонента на портале или отказать в авторизации. Выглядит красиво, но насколько я понимаю, мне нужно будет эмулировать ISG, а PHP не очень подходит для написания серверов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

5. Обычный http запрос от сервера авторизации к серверу БД. На сервере БД соответственно web-сервер + реализация нужного функционала на чем угодно (например php).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На сервере СУБД нет веб-сервера, там вообще никакого постороннего ПО кроме Oracle нет.

Ставить без веской причины постороннее ПО я бы не хотел.

Хотелось бы решить задачу, не трогая сервера биллинга и БД.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.