1

我正在使用 ASTERISK 来桥接公司内部的 sip 呼叫。

只有经过身份验证/授权的用户才能拨打电话。

我们已经有一个处理身份验证的服务,那么有没有办法将星号(sip.conf)的身份验证集成到我们的服务中?

因此,星号可以简单地调用一些与我们的身份验证服务通信的 API,而不是在 sip.conf 中键入所有用户和密码。

基本上我需要一种从 SIP 设备获取用户名/密码并进行身份验证的方法。由于每个用户都有不同的密码,当我们已经在数据库中拥有所有用户/密码时,将其全部输入 sip.conf 中将变得不切实际。

谢谢

4

4 回答 4

3

有很多方法可以在星号中进行身份验证

  • 使用星号实时架构,身份验证是通过数据库(mysql/odbc)。这是强烈推荐的方法。对于实时 sip 集成,请参阅
  • 使用 exec 包含方法(在重新加载时执行提供配置的外部脚本)。只会在重新加载时更改配置。检查此链接
  • 在星号之前使用 openser(kamailio/opensips),使用带有 curl 的 avpairs 从您的 API 获得答案。您的 API 必须非常快,并且您需要成为 opensips/kamailio 方面的专家。

由于所有这些对于星号来说都是很常见的事情,因此您可能需要星号专家来为您的系统验证/安全审核/性能审核,或者您需要员工中的某个人阅读一些书籍,例如O'Reilly 的 Asterisk The Future Of Telephony只是为了了解一些可能的问题。

于 2013-10-25T02:41:25.470 回答
1

arheops 已经成功地击中了大选项。他那样酷。或者,如果您的手机像某些手机一样支持手机上的 XML 浏览/java 应用程序,您还可以使用自定义 SIP 标头来提供第二个身份验证因素。因此,电话有一个非循环的 RSA 密钥,作为第一个身份验证因素,然后动态执行 CHAP 样式调用到您的身份验证服务器,以检索一个寿命短得多的“开始密钥”,该密钥作为自定义 SIP 标头包含在内. 没有时效标头,没有调用权限。如果您可以派生一个两因素身份验证方案,其中一个因素是 RSA/DSA 密钥,那么您可能就足够安全了。

于 2013-10-25T11:28:49.480 回答
0

我在 Asterisk 上工作了 2 年多。我曾经使用 AGI 连接 windows 环境。我写了很多 Asterisk 代码来定制 IVR ......等等。我使用 PHP 编写 AGI。因此,AGI 连接到 Microsoft SQL,获取数据并将数据返回给 Asterisk Dial 计划。这项任务并不简单,但也不太难。问题是你必须学习如何在 Asterisk 中编写代码并学习如何使用 AGI。

于 2013-10-29T22:31:11.067 回答
0

您可以使用 AGI 直接(或通过 Web 服务间接)连接到您的数据库。AGI 可以用 PHP、Java、Python ... 或 Asterisk 提供的其他语言编写。当分机尝试拨打电话时,您的 Agi 会连接到数据库,填写用户名/密码,然后进行身份验证....希望对您有所帮助,

于 2013-10-26T01:07:48.047 回答