BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 апр 2024, 02:31

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: OpenSER+Radius
СообщениеДобавлено: 23 окт 2009, 18:25 
Не в сети

Зарегистрирован: 23 окт 2009, 17:03
Сообщения: 4
Карма: 0
Здравствуйте. Тестируем вашу систему в связке с OpenSER(Kamailio-1.5.2)+BGbilling_4.6.

Появились пока две проблемы при аутентификации по радиусу.
1--- Если в запрос добавляю аттрибуты: h323-call-type и h323-call-origin, то в логах радиуса сообщение - "ERROR [pool-1-thread-14] radius - NAS not found for Packet!!!". Без этих атрибутов аутентификация проходит(без галочки "проверять пароль" в установках типов логинов) и пользователь регистрируется на SIP-сервере.

2 --- Ставим галочку проверять пароль - выдаёт 2 код ошибки (Не верный пароль) - перепроверил и на радиус-клиенте и в установках NAS - секрет один и тот же, пароли клиента одни и те же :( (OpenSER использует DIgest).

В чем может быть проблема ? какие логи или настройки показать, если нужно ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 23 окт 2009, 23:36 
Не в сети
Клиент

Зарегистрирован: 25 ноя 2007, 22:48
Сообщения: 472
Карма: 8
Этот скрипт предобработки радиус атрибутов избавит тебя от необходимости этих атрибутов.
Код:
import bitel.billing.server.radius.*;
// установка всех звонков как исходящие, 2 - входящие
// тут должна-быть какая-то логика, например анализ vendor атрибутов
request.setFlag( 1 );
sessionId = request.getStringAttribute( 44 );
if( sessionId != null )
{
    request.setVendorStringAttribute(24, sessionId );
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 26 окт 2009, 15:14 
Не в сети

Зарегистрирован: 23 окт 2009, 17:03
Сообщения: 4
Карма: 0
Ну с выбором направлений допустим разобрались.

А с аутентификацией чего-то не выходит - h323-return-code=2. Есть мысли ? secret совпадают, пароли тоже проверял;(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 26 окт 2009, 17:11 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Вы бы конфиги выложили, запросы из radius.log..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 03 ноя 2009, 20:07 
Не в сети

Зарегистрирован: 23 окт 2009, 17:03
Сообщения: 4
Карма: 0
Выкладываю конфиги:
конфиг NAS
Цитата:
#код услуги привязанная к NAS
service=1
#методы определения типа звонка

auth.out=all/all
acct.out=all/all


из файла processor.log
Цитата:
11-03/15:06:35 INFO [main] VoiceIpProcessor - [ NAS-Identifier: localhost; NAS-IP-Address: 127.0.0.1; SECRET: 123; Vendor: 9 ] find modes: Sip-URI-User=ALIAS User-Name=LOGIN User-Name=ALIAS Calling-Station-Id=ALIAS

Тип логина - все определяется по связке Sip-URI-User=ALIAS

radius.log
Цитата:
11-03/17:02:00 DEBUG [pool-1-thread-10] VoiceIpProcessor - Process outgoing auth
Type=AUTHENTICATION_REQUEST
Attributes:
User-Name=vasya@212.1.224.117
Digest-Attributes=
vasya
Digest-Attributes=212.1.224.117
Digest-Attributes=24af037f600000001793e8b064520beda38ee1715235a70b8
Digest-Attributes=sip:212.1.224.117
Digest-Attributes=
REGISTER
Digest-Attributes=auth
Digest-Attributes=
00000001
Digest-Attributes=
62b00646
Digest-Response=90d0b165d13cd7583cf81ab847f7eab7
NAS-IP-Address=127.0.0.1
NAS-Port=5060
Service-Type=15
Sip-URI-User=vasya

11-03/17:02:00 DEBUG [pool-1-thread-10] VoiceIpProcessor - Finding login..
11-03/17:02:00 DEBUG [pool-1-thread-10] VoiceIpProcessor - Found login type 1
11-03/17:02:00 DEBUG [pool-1-thread-10] VoiceIpProcessor - Login found.
11-03/17:02:00 DEBUG [pool-1-thread-10] VoiceIpProcessor - Checking access allow..
11-03/17:02:00 DEBUG [pool-1-thread-10] VoiceIpProcessor - Checking password..
11-03/17:02:00 DEBUG [pool-1-thread-10] VoiceIpProcessor - Login password error
11-03/17:02:00 INFO [pool-1-thread-10] radius - RESPONSE:
Type=AUTHENTICATION_REJECT
Process time auth: 75 common_auth: 64
Attributes:
h323-return-code=2


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 12 ноя 2009, 16:26 
Не в сети

Зарегистрирован: 23 окт 2009, 17:03
Сообщения: 4
Карма: 0
Проблема еще актуальна, может подскажете чего не так ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 17 ноя 2009, 18:56 
Не в сети
Клиент

Зарегистрирован: 25 ноя 2007, 22:48
Сообщения: 472
Карма: 8
у Вас User-Name=vasya@212.1.224.117. Логин в договоре должен быть таким же.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 07 сен 2010, 13:42 
Не в сети

Зарегистрирован: 07 сен 2010, 13:28
Сообщения: 3
Карма: 0
Здравствуйте, пытаюсь соединить bgbilling и kamailio. Не проходит аутентификация пользователя, когда стоит галочка проверять пароль.

iONE, Homer вы нашли решение?

Советы приведенные на форуме применял : Скрипт предобработки радиус атрибутов выставлен.
в конфиге NAS
auth.out=all/all
acct.out=all/all


09-07/12:10:12 DEBUG [pool-1-thread-1] VoiceIpProcessor - Process outgoing auth
Type=AUTHENTICATION_REQUEST
Attributes:
User-Name=103@kamailio.local
Digest-Attributes=
103
Digest-Attributes= kamailio.local
Digest-Attributes= 24c8219920000011eee8fc7a1849674f0f28b33cea3d17559
Digest-Attributes= sip:10.88.88.127
Digest-Attributes=
REGISTER
Digest-Attributes= auth
Digest-Attributes=
00000001
Digest-Attributes= "e9d86f71a562359256594048ce813e73
Digest-Response=5c485d31f40bf8f92fecde99ebdc16fa
NAS-IP-Address=10.88.88.127
NAS-Port=5060
Service-Type=15
<AttrCode[208]>=undef
Acct-Session-Id=MzdmMjJhZDFhODg1ZjU4YTBhZDY2YWRkMGI5MGNiMTI.
h323-conf-id=MzdmMjJhZDFhODg1ZjU4YTBhZDY2YWRkMGI5MGNiMTI.

09-07/12:10:12 DEBUG [pool-1-thread-1] VoiceIpProcessor - Finding login..
09-07/12:10:12 DEBUG [pool-1-thread-1] VoiceIpProcessor - Found login type 1
09-07/12:10:12 DEBUG [pool-1-thread-1] VoiceIpProcessor - Checking access allow..
09-07/12:10:12 DEBUG [pool-1-thread-1] VoiceIpProcessor - Checking password..
09-07/12:10:12 DEBUG [pool-1-thread-1] VoiceIpProcessor - Login password error
09-07/12:10:12 INFO [pool-1-thread-2] radius - AUTH:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 07 сен 2010, 16:41 
Не в сети

Зарегистрирован: 07 сен 2010, 13:28
Сообщения: 3
Карма: 0
Обратил внимание на строку в дебаге

<AttrCode[208]>=undef

Т.к в Bgbilling используется радиус атрибуты циско, а там это

ATTRIBUTE Cisco-PW-Lifetime 208 integer Cisco

у openser этот же атрибут 208

ATTRIBUTE Sip-Uri-User 208 string # Proprietary, auth_radius


Может авторизация не проходит из-за отсутствия атрибута Sip-Uri-User?
В таком случае какой должен быть скрипт предобработки для преобразования атрибута?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 14 сен 2010, 15:31 
Не в сети

Зарегистрирован: 07 сен 2010, 13:28
Сообщения: 3
Карма: 0
Разработчики могут что-ниубудь подсказать? почему не работает авторизация?

вопрос с ATTRIBUTE Sip-Uri-User 208 string решили, добавив в словарь bgbilling,

в остальном ситуация та же

Цитата:
09-14/16:24:51 DEBUG [pool-1-thread-4] VoiceIpProcessor - Process outgoing auth
Type=AUTHENTICATION_REQUEST
Attributes:
User-Name=101@kamailio.local
Digest-Attributes=
101
Digest-Attributes= kamailio.local
Digest-Attributes= 24c8f441900000062067ed1547a8c5bb7ea9964ae4f4471e3
Digest-Attributes= sip:10.88.88.127
Digest-Attributes=
REGISTER
Digest-Attributes= auth
Digest-Attributes=
00000001
Digest-Attributes= "8fa4eb353e13de635d20a36374615739
Digest-Response=d0bf2089565a29bd6087382044ab414c
NAS-IP-Address=10.88.88.127
NAS-Port=5060
Service-Type=15
Sip-URI-User=o101

09-14/16:24:51 DEBUG [pool-1-thread-4] VoiceIpProcessor - Finding login..
09-14/16:24:51 DEBUG [pool-1-thread-4] VoiceIpProcessor - Found login type 1
09-14/16:24:51 DEBUG [pool-1-thread-4] VoiceIpProcessor - Checking access allow..
09-14/16:24:51 DEBUG [pool-1-thread-4] VoiceIpProcessor - Checking password..
09-14/16:24:51 DEBUG [pool-1-thread-4] VoiceIpProcessor - Login password error
09-14/16:24:51 INFO [pool-1-thread-4] radius - RESPONSE:
Type=AUTHENTICATION_REJECT
Process time auth: 78 common_auth: 31
Attributes:
h323-return-code=2

Trace:
Login found.



секреты совпадают
processor.log

Цитата:
09-14/16:23:54 INFO [main] processor - Loading NAS list...
09-14/16:23:54 INFO [main] processor - LOADED NAS: [ NAS-Identifier: kamailio.local; NAS-IP-Address: 10.88.88.127; SECRET: testing123; Vendor: 9 ]
CONFIG: service=1
service=2
auth.out=all/all
acct.out=all/all
find.order=0,1,2,3
09-14/16:23:54 INFO [main] VoiceIpProcessor - [ NAS-Identifier: kamailio.local; NAS-IP-Address: 10.88.88.127; SECRET: testing123; Vendor: 9 ] find modes: User-Name=LOGIN User-Name=ALIAS Calling-Station-Id=ALIAS Sip-URI-User=ALIAS



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 22 сен 2010, 16:51 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Вот код проверки digest-md5 авторизации. Там должны приходить отдельные атрибуты.
Digest_Username, Digest_Method и т.п.

Код:
RadiusAttribute digestResponse = getAttribute( RadiusStandartAttributes.Digest_Response );
      if( digestResponse != null )
      {
         try
         {
            RadiusAttribute userName = getAttribute( RadiusStandartAttributes.Digest_Username );
            RadiusAttribute method = getAttribute( RadiusStandartAttributes.Digest_Method );
            RadiusAttribute uri = getAttribute( RadiusStandartAttributes.Digest_URI );
            RadiusAttribute realm = getAttribute( RadiusStandartAttributes.Digest_Realm );
            RadiusAttribute nonce = getAttribute( RadiusStandartAttributes.Digest_Nonce );

            RadiusAttribute algoritm = getAttribute( RadiusStandartAttributes.Digest_Algorithm );

            if( algoritm != null && !"md5".equalsIgnoreCase( algoritm.getStringValue() ) )
            {
               logger.warn( "Unsupported Digest-Algorithm=" + algoritm.getStringValue() );
               return false;
            }

            if( userName == null || method == null || uri == null || realm == null || nonce == null )
            {
               logger.warn( "Incorrect Digest-Authentication attributes." );
               return false;
            }

            final byte[] colon = ":".getBytes( "UTF-8" );

            MessageDigest md5 = MessageDigest.getInstance( "MD5" );
            md5.update( userName.getByteValue() );
            md5.update( colon );
            md5.update( realm.getByteValue() );
            md5.update( colon );
            md5.update( openPassw.getBytes( "UTF-8" ) );
            byte[] a1 = md5.digest();
            a1 = Utils.toHexString( a1 ).toLowerCase().getBytes( "UTF-8" );

            md5.reset();
            md5.update( method.getByteValue() );
            md5.update( colon );
            md5.update( uri.getByteValue() );
            byte[] a2 = md5.digest();
            a2 = Utils.toHexString( a2 ).toLowerCase().getBytes( "UTF-8" );

            final byte[] nonceBytes = nonce.getStringValue().getBytes( "UTF-8" );

            md5.reset();
            md5.update( a1 );
            md5.update( colon );
            md5.update( nonceBytes );
            md5.update( colon );
            md5.update( a2 );
            byte[] resp = md5.digest();

            if( Arrays.equals( digestResponse.getByteValue(), resp ) )
            {
               md5.reset();
               md5.update( colon );
               md5.update( uri.getByteValue() );
               a2 = md5.digest();
               a2 = Utils.toHexString( a2 ).toLowerCase().getBytes( "UTF-8" );

               md5.reset();
               md5.update( a1 );
               md5.update( colon );
               md5.update( nonceBytes );
               md5.update( colon );
               md5.update( a2 );
               resp = md5.digest();

               response.setByteAttribute( RadiusStandartAttributes.Digest_Response_Auth, resp );

               return true;
            }
         }
         catch( Exception e )
         {
            e.printStackTrace();
         }
      }

      return false;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 04 мар 2011, 18:31 
Не в сети

Зарегистрирован: 04 мар 2011, 14:15
Сообщения: 5
Карма: 0
У кого нибудь получилось решить проблему с авторизацией? Ситуация та-же:


Код:
03-04/14:43:01  INFO [pool-1-thread-28] radius -  AUTH:
Type=AUTHENTICATION_REQUEST
Attributes:
   User-Name=2219001@example.com
   NAS-Identifier=kamserv.example.com
   Digest-Attributes=
   2219001
   Digest-Attributes=example.com
   Digest-Attributes="TXDRcE1w0ERKshyo0hJpTOOjiBM8k2SJ
   Digest-Attributes=sip:example.com
   Digest-Attributes=
REGISTER
   Digest-Attributes=auth
   Digest-Attributes=   
00000001
   Digest-Attributes=
                         2804ce5702
   Proxy-State=112
   Digest-Response=e79b47955c02401fe52d05f7956609aa
   NAS-IP-Address=127.0.0.1
   NAS-Port=5060
   Service-Type=15
   Sip-Uri-User=2219001

03-04/14:43:01  INFO [pool-1-thread-28] radius -  RESPONSE:
Type=AUTHENTICATION_REJECT
Process time auth: 12 common_auth: 2
Attributes:
   Proxy-State=112
   h323-return-code=2

Trace:
Login found.
 


Цитата:
Вот код проверки digest-md5 авторизации. Там должны приходить отдельные атрибуты.
Digest_Username, Digest_Method и т.п.

В словаре bgbilling нет перечисленных атрибутов, если добавить их в ручную, модуль не поднимается и выводит следующее в лог:
Код:
03-04/12:33:33  INFO [main] DefaultServerSetup - Init DB connection pools
03-04/12:33:33  INFO [main] DefaultServerSetup - Init trash pools..
03-04/12:33:33 ERROR [main] LoggingPrintStream - java.lang.ArrayIndexOutOfBoundsException: 1063
03-04/12:33:33 ERROR [main] LoggingPrintStream -    at bitel.billing.server.radius.RadiusAttributes.loadDictionary(RadiusAttributes.java:184)
03-04/12:33:33 ERROR [main] LoggingPrintStream -    at bitel.billing.server.radius.RadiusAttributes.loadDictionary(RadiusAttributes.java:89)
03-04/12:33:33 ERROR [main] LoggingPrintStream -    at bitel.billing.server.radius.RadiusAttributes.<init>(RadiusAttributes.java:54)
03-04/12:33:33 ERROR [main] LoggingPrintStream -    at bitel.billing.server.radius.RadiusAttributes.init(RadiusAttributes.java:21)
03-04/12:33:33 ERROR [main] LoggingPrintStream -    at bitel.billing.server.radius.Radius.<init>(Radius.java:29)
03-04/12:33:33 ERROR [main] LoggingPrintStream -    at bitel.billing.server.radius.Radius.main(Radius.java:94)
03-04/12:33:33 ERROR [main] LoggingPrintStream - Error of dictonary loading!!!

после добавления этих атрибутов в словарь:
Код:
       <attribute name="Digest-Realm" type="string" code="1063"/>
                <attribute name="Digest-Nonce" type="string" code="1064"/>
                <attribute name="Digest-Method" type="string" code="1065"/>
                <attribute name="Digest-URI" type="string" code="1066"/>
                <attribute name="Digest-User-Name" type="string" code="1072"/>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 11 мар 2011, 14:53 
Не в сети

Зарегистрирован: 04 мар 2011, 14:15
Сообщения: 5
Карма: 0
Есть кто живой? Тема актуальна. В моём случае меня смущают непонятные символы в значениях digest атрибутов и атрибут Proxy-State=112. Связку настраивал через freeradius, при обработке запроса он проверяет digest атрибуты на корректность и у него в логе этих символов нет:
Код:
[digest] Checking for correctly formatted Digest-Attributes
[digest] Digest-Attributes look OK.  Converting them to something more usful.
   Digest-User-Name = "2219001"
   Digest-Realm = "example.com"
   Digest-Nonce = "TXnbuE152ox/k47eGupW9aZqnQVqQjFw"
   Digest-URI = "sip:example.com"
   Digest-Method = "REGISTER"
   Digest-QOP = "auth"
   Digest-Nonce-Count = "00000001"
   Digest-CNonce = "7b468dea57"
[digest] Adding Auth-Type = DIGEST
++[digest] returns ok


Версия системы: Linux sipserver 2.6.32-5-amd64 #1 SMP Wed Jan 12 03:40:32 UTC 2011 x86_64 GNU/Linux (Debian Squeeze)
Версия BGB: 5.0
Версия jre: 1.6.0_24
Версия модуля VoiceIP от 10.08.10 14:08
Версия RADIUS сервера для модуля VoiceIP от 09.12.10 19:01


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 07 сен 2011, 17:06 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
dangerkoffe писал(а):
после добавления этих атрибутов в словарь:
Код:
       <attribute name="Digest-Realm" type="string" code="1063"/>
                <attribute name="Digest-Nonce" type="string" code="1064"/>
                <attribute name="Digest-Method" type="string" code="1065"/>
                <attribute name="Digest-URI" type="string" code="1066"/>
                <attribute name="Digest-User-Name" type="string" code="1072"/>


Зачем ?

Они там уже есть
Цитата:
<attribute name="Digest-Response" type="string" code="103"/>
<attribute name="Digest-Realm" type="string" code="104"/>
<attribute name="Digest-Nonce" type="string" code="105"/>
<attribute name="Digest-Response-Auth" type="string" code="106"/>
<attribute name="Digest-Nextnonce" type="string" code="107"/>
<attribute name="Digest-Method" type="string" code="108"/>
<attribute name="Digest-URI" type="string" code="109"/>
<attribute name="Digest-Qop" type="string" code="110"/>
<attribute name="Digest-Algorithm" type="string" code="111"/>
<attribute name="Digest-Entity-Body-Hash" type="string" code="112"/>
<attribute name="Digest-CNonce" type="string" code="113"/>
<attribute name="Digest-Nonce-Count" type="string" code="114"/>
<attribute name="Digest-Username" type="string" code="115"/>
<attribute name="Digest-Opaque" type="string" code="116"/>
<attribute name="Digest-Auth-Param" type="string" code="117"/>
<attribute name="Digest-AKA-Auts" type="string" code="118"/>
<attribute name="Digest-Domain" type="string" code="119"/>
<attribute name="Digest-Stale" type="string" code="120"/>
<attribute name="Digest-HA1" type="string" code="121"/>



Проблема в том, что они у вас в запросе не приходят как отдельные атрибуты .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 07 сен 2011, 17:42 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Проблема, похоже в том, что у вас приходят атрибуты вот в таком вот формате :

http://www.axlradius.com/clientdocs/doc ... sip-00.txt

У нас такое не поддерживается ..Можно скриптом предобработки разобрать эти атрибуты на отдельные составляющие .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 07 сен 2011, 17:57 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Насколько я понимаю это был черновой стандарт RFC(draft RFC), который так и не был принят .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 07 сен 2011, 18:22 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
А хотя нет , я ошибся :). У нас поддерживается такой вид атрибутов. Проблема не в этом .

Попробуйте настроить логи так ,чтобы они выводили DEBUG . Нужно найти такие строки в логах

Код:
try checkDigestMD5Password

И показать что он выводит дальше


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 07 сен 2011, 18:26 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
И еще в догонку. Это оказывается реализовано недавно , в июле:

http://bgbilling.ru/v5.1/download/voiceip/fixed_rad

Так что вам надо просто обновить радиус.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 03 окт 2011, 17:22 
Не в сети

Зарегистрирован: 04 мар 2011, 14:15
Сообщения: 5
Карма: 0
Обновил радиус до версии 5.1_175

авторизация всё равно не проходит

Код:
10-03/15:09:24 DEBUG [radiusListener-p-3-t-11] RadiusUtils - try checkDigestMD5Password
10-03/15:09:24 DEBUG [radiusListener-p-3-t-11] RadiusUtils - digestAttributes=[^[4953319002@example.ru, ^A^Pexample.ru, ^B"TomZEU6Jl+Xt4ymUvNG30jzB4CtsYKVc, ^D^\sip:3390555@example.ru, ^C^HINVITE, ^E^Fauth,00000001, ^H5bcf0548]
10-03/15:09:24 DEBUG [radiusListener-p-3-t-11] RadiusUtils - digestResponse=f78e3258f8e687ed657afd77897a8ed7
10-03/15:09:24 DEBUG [radiusListener-p-3-t-11] RadiusUtils - user =4953319002 realm =example.ru nonce = TomZEU6Jl+Xt4ymUvNG30jzB4CtsYKVc method = INVITE uri = sip:3390555@example.ru
10-03/15:09:24 DEBUG [radiusListener-p-3-t-11] AbstractRadiusProcessor - Login password error
10-03/15:09:24  INFO [radiusListener-p-3-t-11] RadiusListenerWorker - RESPONSE:
Packet type: Access-Reject


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 04 окт 2011, 18:09 
Не в сети

Зарегистрирован: 17 дек 2006, 02:49
Сообщения: 121
Откуда: Из ЛИСа
Карма: 1
У меня все работает!
Скорее всего, Вы делаете что-то не так...
Что у Вас не идет регистрация или инвайты?
покажите часть конфига kamailio, где радиус прописан.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 05 окт 2011, 17:53 
Не в сети

Зарегистрирован: 04 мар 2011, 14:15
Сообщения: 5
Карма: 0
Авторизация не проходит ни при регистрации ни при инвайтах.
Не думаю, что проблема в конфиге камаилио, насколько я знаю там нет особых настроек касающихся digest-авторизации, тем более что digest-response вычисляется на клиенте.

Я нашел другую возможную причину.

В этом посте(http://forum.bgbilling.ru/viewtopic.php?f=6&t=3070#p32110) используется устаревший алгоритм вычисления дайджест-респонса, описанный в rfc2069(http://tools.ietf.org/html/rfc2069), который был позднее заменен rfc2617(http://tools.ietf.org/html/rfc2617).

Подробно написано на википедии http://en.wikipedia.org/wiki/Digest_acc ... entication

Если кратко, то в случае, когда qop=auth, вместо "response = MD5(HA1:nonce:HA2)" должно быть "response = MD5(HA1:nonce:nonceCount:clientNonce:qop:HA2)".

Если в версии 5.1 сохранился устаревший алгоритм, то возможно проблема заключается в этом. Я вручную посчитал респонс сгенерированный клиентским линксисом по второй формуле, всё сошлось.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 06 окт 2011, 15:03 
Не в сети

Зарегистрирован: 17 дек 2006, 02:49
Сообщения: 121
Откуда: Из ЛИСа
Карма: 1
А Вы не думали, что проблема гораздо проще, а именно в Вашем неправильном конфигурировании сабжа для работы с замечательным BGBilling`ом?
Да, еще, если Вы хотите "вместо "response = MD5(HA1:nonce:HA2)" должно быть "response = MD5(HA1:nonce:nonceCount:clientNonce:qop:HA2)", то надо послать заявочку, оплатить счетик и замечательные разработчики все быстро и недорого сделают! Сам это делал и не раз!
а пока попробуйте такую конструкцию:
if (!www_authorize("$td", "subscriber"))
{
www_challenge("$td", "0");
exit;
}

ЗЫ
Нолик там))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 06 окт 2011, 15:48 
Не в сети

Зарегистрирован: 04 мар 2011, 14:15
Сообщения: 5
Карма: 0
Ну я бы не стал называть это "неправильным" конфигурированием. :)

Интересно, что в документации к модулю Auth флаг "0" для функции www_challenge не описан http://www.kamailio.org/docs/modules/3. ... _challenge

Но Вы оказались правы. Похоже, что проблема наконец-то решена. Огромное спасибо за подсказку!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 07 окт 2011, 01:35 
Не в сети

Зарегистрирован: 17 дек 2006, 02:49
Сообщения: 121
Откуда: Из ЛИСа
Карма: 1
dangerkoffe писал(а):
Ну я бы не стал называть это "неправильным" конфигурированием. :)

Интересно, что в документации к модулю Auth флаг "0" для функции www_challenge не описан http://www.kamailio.org/docs/modules/3. ... _challenge

Но Вы оказались правы. Похоже, что проблема наконец-то решена. Огромное спасибо за подсказку!!

Всегда пожалуйста!

По поводу платных доработок, Вы обдумайте. Вот, думаю, Вы скоро будете юзать (совершенно бесплатно) пару фич в части SIP, за которые я пару месяцев назад заплатил)))) Так может стоит доработать так как Вы писали, внесете свою небольшую лепту?

А по поводу документации Вы правы. Я сам на эти грабли наступил в свое время и нашел выход опытным путем (научный тык)...
И еще, я заметил, что админы очень неохотно делятся наработками в конфигурировании Kamailio. В частности, я тут вопросик iONE задавал, так ни ответа, ни привета....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 07 окт 2011, 02:19 
Не в сети
Клиент

Зарегистрирован: 04 июн 2009, 15:33
Сообщения: 268
Откуда: Москва
Карма: 8
Ну правильно, все же думают что выдумывают самолёт, а получается то, что давным-давно выдумали и называется колесо...

_________________
Клиент: вер. 7.1.102 / 20.04.2018 19:02:09
os: Windows 8.1; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_172
Сервер: вер. 7.1.970 / 20.04.2018 19:04:17
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_162


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 08 фев 2012, 14:09 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Подскажите пожалуйста по этому скрипту? Что такое openPassw и logger? Они нигде в скрипте не объявлены. Классов не импортируется. Откуда их брать?

Код:
RadiusAttribute digestResponse = getAttribute( RadiusStandartAttributes.Digest_Response );
      if( digestResponse != null )
      {
         try
         {
            RadiusAttribute userName = getAttribute( RadiusStandartAttributes.Digest_Username );
            RadiusAttribute method = getAttribute( RadiusStandartAttributes.Digest_Method );
            RadiusAttribute uri = getAttribute( RadiusStandartAttributes.Digest_URI );
            RadiusAttribute realm = getAttribute( RadiusStandartAttributes.Digest_Realm );
            RadiusAttribute nonce = getAttribute( RadiusStandartAttributes.Digest_Nonce );

            RadiusAttribute algoritm = getAttribute( RadiusStandartAttributes.Digest_Algorithm );

            if( algoritm != null && !"md5".equalsIgnoreCase( algoritm.getStringValue() ) )
            {
               logger.warn( "Unsupported Digest-Algorithm=" + algoritm.getStringValue() );
               return false;
            }

            if( userName == null || method == null || uri == null || realm == null || nonce == null )
            {
               logger.warn( "Incorrect Digest-Authentication attributes." );
               return false;
            }

            final byte[] colon = ":".getBytes( "UTF-8" );

            MessageDigest md5 = MessageDigest.getInstance( "MD5" );
            md5.update( userName.getByteValue() );
            md5.update( colon );
            md5.update( realm.getByteValue() );
            md5.update( colon );
            md5.update( openPassw.getBytes( "UTF-8" ) );
            byte[] a1 = md5.digest();
            a1 = Utils.toHexString( a1 ).toLowerCase().getBytes( "UTF-8" );

            md5.reset();
            md5.update( method.getByteValue() );
            md5.update( colon );
            md5.update( uri.getByteValue() );
            byte[] a2 = md5.digest();
            a2 = Utils.toHexString( a2 ).toLowerCase().getBytes( "UTF-8" );

            final byte[] nonceBytes = nonce.getStringValue().getBytes( "UTF-8" );

            md5.reset();
            md5.update( a1 );
            md5.update( colon );
            md5.update( nonceBytes );
            md5.update( colon );
            md5.update( a2 );
            byte[] resp = md5.digest();

            if( Arrays.equals( digestResponse.getByteValue(), resp ) )
            {
               md5.reset();
               md5.update( colon );
               md5.update( uri.getByteValue() );
               a2 = md5.digest();
               a2 = Utils.toHexString( a2 ).toLowerCase().getBytes( "UTF-8" );

               md5.reset();
               md5.update( a1 );
               md5.update( colon );
               md5.update( nonceBytes );
               md5.update( colon );
               md5.update( a2 );
               resp = md5.digest();

               response.setByteAttribute( RadiusStandartAttributes.Digest_Response_Auth, resp );

               return true;
            }
         }
         catch( Exception e )
         {
            e.printStackTrace();
         }
      }

      return false;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 13 фев 2012, 21:02 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
up


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 17 фев 2012, 20:52 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Все еще ОЧЕНЬ актуально. Помогите уже разобраться в этом скрипте :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 20 фев 2012, 21:56 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
up


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenSER+Radius
СообщениеДобавлено: 21 фев 2012, 12:34 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
openPassw - это пароль от логина в открытом виде logger - это логер log4j вообще можно убрать если не нужен . Этот код вообще от версии 4.6, устарел вроде.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.235s | 78 Queries | GZIP : On ]