Владимир, добрый день.
В CGP Вы реализовали простой и эффективный механизм для трансфера удаленного абонента на сервисный номер пользователя. Такой трансфер используется, например, для реализации услуги Call Parking/Call Pickup. Механизм заключается в переписывании sip uri в поле Refer-To с *56@domain на service--56%23user@domain. По приходу сигнала REFER UA удаленного абонента звонит на этот uri, и CGP запускает service task с нужным параметром. К сожалению, механизм никак не запрещает произвольному абоненту позвонить на этот номер просто так, не в результате сигнала REFER. Это неправильно. Если в случае Call Parking/Call Pickup это ведет к анекдотической проблеме (действительно, мало кому придет в голову позвонить на мой сервисный номер, запарковаться и ждать, пока я его подниму), то в случае других услуг проблема уже серьзнее. Например, ad-hoc conference, услуга настолько же простая, насколько и практичная. Чтобы включить абонента в конференцию, мне надо переслать его звонок на сервисный номер -- пусть будет *81. Но без механизмой защиты, на этот номер может позвонить любой человек и включиться в мою конференцию, хотя я его и не приглашал.
Решить эту проблему можно, на мой взгляд, добавлением к sip uri в refer-to секрета и запретом внешних звонков на сервисные номера без предъявления этого секрета. Например, так:
Refer-To: <sip:service--81%
23growler@itoolabs.com?Refer-Key=df31759540dc28f75a20f443a19b1148>
CGP помнит секрет, выданный при переписывании SIP URI, до тех пор, пока не придет звонок от удаленного абонента с этим секретом, либо пока не умрет диалог (с call-id которого отсылался запрос REFER).
С уважением,
--
Alexey Naidyonov
ITooLabs
Получено Tue Nov 07 09:04:07 2006
Этот архив был сгенерирован hypermail 2.1.8 : Tue 07 Nov 2006 - 12:13:07 MSK