Пытаюсь доработать свой биллинг для поддержки 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.
Натолкните, пожалуйста, на мысль! Ссылки приветствуются!
_________________
Maksim Timofejev
"rlm_digest: Converting Digest-Attributes to something sane... "
Кто может подсказать причину?
_________________
Maksim Timofejev
| Код: |
| rad_recv: Access-Request packet from host 192.168.102.3 port 40438, id=221, length=252 User-Name = "tma@realm" Digest-Attributes = "\n\005tma" Digest-Attributes = "\001\nrealm" 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 "realm" for User-Name = "tma@realm" [suffix] No such realm "realm" |
В чем я могу ошибаться?
P.S. FreeRADIUS обновил до 2.1.1.
_________________
Maksim Timofejev
Последний раз редактировалось: tma (Чт Ноя 13, 2008 12:04)
Неужели никто не знает?
По-моему проблема в словаре, но я не знаю где взять нормальный!
HELP!!!
_________________
Maksim Timofejev