Jump to content
Калькуляторы

Биллинг на базе FreeRadius Radius attribute Digest-Attributes

Добрый день!

 

Пытаюсь доработать свой биллинг для поддержки Digest авторизации (биллинг базируется на биллинге от gnugk):

На настоящий момент есть следующая проблема.

Есть пакет radius'а от Yate к FreeRadius:

        User-Name = "tma"
        Service-Type = Sip-Session
        Cisco-AVPair = "h323-session-protocol=sipv2"
        NAS-Identifier = "Yate"
        NAS-IP-Address = 192.168.128.3
        Digest-Response = "fa96fef0b9320ae074838911df257a64"
        Digest-Attributes = "\002-851e610d10581ae4ed5e8be9a1bb84fe.1226160482"
        Digest-Attributes = "\003\nREGISTER"
        Digest-Attributes = "\004\023sip:10.0.0.1:5061"
        Digest-Attributes = "\n\005tma"
        Digest-Attributes = "\001\006Yate"
        Digest-Attributes = "\006\005MD5"
        h323-remote-address = "h323-remote-address=10.0.0.20"

 

Вопрос -- как в программе разобрать аттрибут Digest-Attributes на составляющие?

Можно, конечно, в конфиге написать что-то типа Digest-Attributes='%{Digest-Attributes[2]}' (как массив), но это не правильно, т.к. если вдруг поменяется

порядок следования аттрибутов, то все нарушится. А в примере FreeRadius порядок как раз иной:

   NAS-IP-Address = d5 89 45 26 (213.137.69.38)
   NAS-Port-Type = 5 (Virtual)
   User-Name = "12345678"
   Digest-Response (206) = "2ae133421cda65d67dc50d13ba0eb9bc"
   Digest-Attributes (207) = [Realm (1) = "deltathree"]
   Digest-Attributes (207) = [Nonce (2) = "3bada1a0"]
   Digest-Attributes (207) = [Method (3) = "INVITE"]
   Digest-Attributes (207) = [URI (4) = "sip:97226491335@213.137.69.38"]
   Digest-Attributes (207) = [Algorithm (5) = "md5"]
   Digest-Attributes (207) = [User-Name (10) = "12345678"]

 

Пример взят из draft-sterman-aaa-sip-00.txt.

 

Натолкните, пожалуйста, на мысль! Ссылки приветствуются!

Share this post


Link to post
Share on other sites

Похоже модуль не конвертирует атрибуты, нашел пример:

"rlm_digest: Converting Digest-Attributes to something sane... "

Кто может подсказать причину?

Share this post


Link to post
Share on other sites

Попробовал с OpenSER, получил тот же результат:

 

rad_recv: Access-Request packet from host 192.168.102.3 port 40438, id=221, length=252
        User-Name = "tma@voip.zet"
        Digest-Attributes = "\n\005tma"
        Digest-Attributes = "\001\nvoip.zet"
        Digest-Attributes = "\002*4919a559371dcf3469748a4e19d18aa3f38f8fcc"
        Digest-Attributes = "\004\030sip:192.168.102.3:5061"
        Digest-Attributes = "\003\nREGISTER"
        Digest-Response = "185bf4620df28f6aa6752b18f241c186"
        Service-Type = Sip-Session
        Sip-Uri-User = "tma"
        Cisco-AVPair = "call-id=NDY3MWM2ZTVjMjZlYTA5YjFkNzA1OGRlODFiOGQyYmQ."
        NAS-Port = 5060
        NAS-IP-Address = 192.168.102.3
+- entering group authorize {...}
++[preprocess] returns ok
[digest] Adding Auth-Type = DIGEST
++[digest] returns ok
[suffix] Looking up realm "voip.zet" for User-Name = "tma@voip.zet"
[suffix] No such realm "voip.zet"

 

В чем я могу ошибаться?

Словарь неправильный или еще что-нибудь?

 

P.S. FreeRADIUS обновил до 2.1.1

Share this post


Link to post
Share on other sites

Добрый день!

 

Проблему с разбором атрибутов решил. Оказалось, что нужно вернуть пароль и digest модуль сам все разберет.

Но т.к. возвращать пароль наобум нельзя, я думаю, то пришлось писать свой разбор атрибутов на pgplsql (у меня PostgreSQL).

 

Но, возник новый вопрос -- какие нужно возвращать атрибуты в случае с SIP-сессией?

Сейчас freeradius получает от SQL-сервера следующие атрибуты:

 h323-return-code=0
h323-credit-amount=2137.15
h323-currency=RUB
h323-billing-model=2
h323-ivr-in=terminal-alias:^$

 

Что нужно вернуть для SIP-сервера?

Заранее спасибо!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this