SIP-сервлет FORM аутентификация
У меня есть клиент-серверное приложение Java, основанное на HTTP. Теперь я хочу добавить немного функциональности SIP. Сервер может принимать сообщения SIP только от аутентифицированного пользователя, но аутентификация основана на HTTP.
Есть ли способ авторизовать SIP-сообщения только для пользователей, прошедших аутентификацию через HTTP?
Контейнер: mobicents 2 на JBoss 7
PS: я использую декларативную безопасность, поэтому контейнер должен знать личность пользователя.
ОБНОВИТЬ
Что мне нужно, это своего рода система отслеживания аутентификации, что-то вроде cookie для sip-сообщений: токен, добавляемый в каждое sip-сообщение, которое сообщает контейнеру, что я уже аутентифицирован через HTTP.
Можно было бы передать токен с помощью пользовательского заголовка SIP, чем с помощью @SipApplicationKey
присоединиться к SipApplicationSession. В этом случае проблема заключается в том, что я не могу сгенерировать ключ из HttpSession. кроме того, я не уверен, что присоединение к SipApplicationSession решит проблему, так как jsr289 говорит, что SipApplicationSession может иметь более одной HttpSession, таким образом, потенциально, более одного аутентифицированного пользователя.
1 ответ
SipApplicationSession
для объединения двух (или более) SipSession
для того, чтобы создать спина к спине UA.
Мне нужно сделать что-то подобное, и я работаю над тем, чтобы реализовать это таким образом. Самая большая проблема заключается в том, как связать SipSession
с HttpSession
, Если вы сделали это, вы можете просто получить аутентифицированного пользователя SipSession
от ассоциированного HttpSession
,
Для этого я отправлю дополнительный заголовок в сообщениях SIP, назовем его SESSIONID
и значение будет `httpSession.getId()'. Затем при обработке сообщения SIP вы можете сканировать сеансы HTTP и связывать сеанс SIP с сеансом с соответствующим идентификатором.