2013-09-07 1 views
0

У меня есть клиентское/Java-приложение java на основе HTTP. Теперь я хочу добавить некоторые функции SIP. Сервер может принимать сообщения SIP только от аутентифицированного пользователя, но аутентификация основана на HTTP.SIP-сервлет FORM-аутентификация

Есть ли способ авторизации SIP-сообщений только для пользователей, прошедших аутентификацию через HTTP?

Контейнер: mobicents 2 на JBoss 7

PS: Я использую декларативную безопасность, поэтому контейнер должен быть осведомлен о личности пользователя.

UPDATE

Что мне нужно это своего рода система слежения аутентификации, что-то вроде печенья для потягивать сообщений: маркер для добавления в каждом глотке сообщении, информирует контейнер, который я уже заверенный через HTTP ,

Способ может состоять в том, чтобы передать токен с помощью пользовательского заголовка SIP, чем с помощью @SipApplicationKey, чтобы присоединиться к SipApplicationSession. В этом случае проблема заключается в том, что я не могу сгенерировать ключевую форму HttpSession. кроме того, я не уверен, что присоединение к SipApplicationSession решает проблему, поскольку jsr289 говорит, что SipApplicationSession может иметь более одного HttpSession, таким образом, потенциально, более одного аутентифицированного пользователя.

+0

Аутентификация подлинности для сервлета SIP ничем не отличается от аутентификации формы для любого другого сервлета. Все это определено в 'web.xml' и спецификации сервлета. – EJP

+0

@EJP: да, но как только пользователь аутентифицируется через HTTP, как может sip-контейнер узнать, принадлежит ли входящее sip-сообщение этому аутентифицированному пользователю? Используя HTTP, я могу использовать файлы cookie для отслеживания сеанса. – Alf

+0

Проверяя «HttpSession», «remoteUser» и т. Д. – EJP

ответ

0

SipApplicationSession предназначен для соединения двух (или более) SipSession, чтобы создать обратную связь UA.

Мне нужно сделать что-то подобное, и я работаю над его реализацией. Самая большая проблема заключается в том, как связать SipSession с HttpSession. Если вы это сделали, вы можете просто получить аутентифицированного пользователя SipSession из связанного HttpSession.

Для этого я пошлю дополнительный заголовок в сообщениях SIP, назовем его SESSIONID, и значение будет `httpSession.getId() '. Затем при обработке SIP-сообщения вы можете сканировать через сеансы HTTP и связывать сеанс SIP с тем, у кого есть соответствующий идентификатор.

 Смежные вопросы

  • Нет связанных вопросов^_^