【问题标题】:SIP servlet FORM authenticationSIP servlet FORM 认证
【发布时间】:2013-09-07 21:16:19
【问题描述】:

我有一个基于 HTTP 的 java 客户端/服务器应用程序。现在我想添加一些 SIP 功能。服务器只能接受来自经过身份验证的用户的 SIP 消息,但身份验证是基于 HTTP 的。

有没有办法只为通过 HTTP 认证的用户授权 SIP 消息?

容器:JBoss 7 上的 mobicents 2

PS:我使用声明式安全性,因此容器必须知道用户身份。

更新

我需要的是一种身份验证跟踪系统,类似于 sip 消息的 cookie:在每条 sip 消息中添加一个令牌,通知容器我已经通过 HTTP 进行了身份验证。

一种方法可能是通过自定义 SIP 标头传递令牌,而不是使用 @SipApplicationKey 加入 SipApplicationSession。在这种情况下,问题是我无法从 HttpSession 生成密钥。此外,我不确定加入 SipApplicationSession 是否能解决问题,因为 jsr289 表示 SipApplicationSession 可以有多个 HttpSession,因此可能有多个经过身份验证的用户。

【问题讨论】:

  • SIP servlet 的表单身份验证与任何其他 servlet 的表单身份验证没有什么不同。这一切都在 web.xml 和 Servlet 规范中定义。
  • @EJP:是的,但是一旦用户通过 HTTP 进行身份验证,sip 容器如何知道传入的 sip 消息是否属于该经过身份验证的用户?使用 HTTP,我可以使用 cookie 来跟踪会话。
  • 通过检查HttpSession,remoteUser

标签: java authentication sip-servlet


【解决方案1】:

SipApplicationSession 用于连接两个(或更多)SipSession 以创建背靠背 UA。

我需要做一些类似的事情,我正在努力以这种方式实现它。 最大的问题是如何将SipSessionHttpSession 关联起来。如果你已经这样做了,你可以简单地从关联的HttpSession 中获取经过身份验证的SipSession 用户。

为此,我将在 SIP 消息中发送一个额外的标头,我们称之为 SESSIONID,其值为 `httpSession.getId()'。然后在处理 SIP 消息时,您可以扫描 HTTP 会话并将 SIP 会话与具有相应 id 的会话关联。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    相关资源
    最近更新 更多