我正在使用星号来桥接公司内部的sip呼叫。
仅允许经过身份验证/授权的用户进行呼叫。
我们已经有一个处理身份验证的服务,那么有没有办法将星号(sip.conf)的身份验证集成到我们的服务中?
因此,与其在 sip.conf 中键入所有用户和密码,星号可以简单地调用一些与我们的身份验证服务通信的 API。
基本上,我需要一种方法来从SIP设备获取用户名/密码并进行身份验证。由于每个用户都有不同的密码,因此当我们的数据库中已经有所有用户/密码时,在 sip.conf 中键入所有密码是不切实际的。
谢谢
有很多方法可以在星号中进行身份验证
- 使用星号实时架构,身份验证是通过数据库(MySQL/ODBC)。这是强烈推荐的方法。有关实时 sip 集成,请参阅此处。
- 使用exec include方法(在重新加载时执行提供配置的外部脚本)。仅在重新加载时更改配置。检查此链接
- 在星号之前使用 openser(kamailio/opensips),使用 avpair 和 curl 从您的 API 获得答案。你的API必须非常快,你需要成为opensips/kamailio的专家。
由于所有这些对于星号来说都是很常见的事情,因此您可能需要一个星号专家来验证/安全审计/性能审计您的系统,或者您需要员工中的某个人阅读一些书籍,例如O'Reilly的Asterisk The Future of Telephony只是为了了解一些可能的问题。
arheops 已经死了大选项。 他那样很酷。 或者,如果您的手机像某些手机一样支持手机上的 XML 浏览/Java 应用程序,您也可以使用自定义 SIP 标头来提供第二个身份验证因素。 因此,电话具有第一个身份验证因素的非轮换 RSA 密钥,然后动态执行对身份验证服务器的 CHAP 样式调用,以检索生存期更短的"go 密钥",该密钥作为自定义 SIP 标头包含在内。 没有时间有效的标头,没有呼叫权限。如果您可以派生出双因素身份验证方案,其中一个因素是 RSA/DSA 密钥,您可能足够安全。
您可以使用 AGI 直接(或通过 Web 服务间接)连接到您的数据库。AGI可以用PHP,Java,Python编写...或Asterisk提供的其他语言。当分机尝试拨打电话时,您的 Agi 连接到数据库,完全注销用户名/密码,然后进行身份验证....希望这有帮助,
我在Asterisk工作了2年多。我曾经使用AGI与Windows环境连接。我写了很多星号代码来切割 IVR ...等等。 我用PHP来编写AGI。因此,AGI连接到Microsoft SQL,获取数据并将数据返回到Asterisk Dial计划。这项任务并不简单,但不太困难。问题是你必须学习如何用Asterisk编写代码,并学习如何使用AGI。