Asterisk SIP自定义身份验证

时间:2013-10-24 20:49:26

标签: authentication sip asterisk

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

只允许经过身份验证/授权的用户拨打电话。

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

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

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

由于

4 个答案:

答案 0 :(得分:3)

有很多方法可以在星号

中进行身份验证
  • 使用星号realtime architecture,auth是通过数据库(mysql / odbc)。这是强烈推荐的方法。对于实时sip集成,请参阅this
  • 使用exec include方法(在重载执行外部脚本,提供配置)。将仅在重新加载时更改配置。 Check this link
  • 在星号之前使用openser(kamailio / opensips),使用curl的avpairs从你的API获得答案。您的API必须非常快,您需要成为opensips / kamailio的专家。

由于所有这些都是星号的常见问题,您可能需要一位星号专家来验证/安全审核/性能审核,或者您需要员工的某些人阅读O'Reilly's Asterisk The Future Of Telephony之类的书籍才能理解一些可能的问题。

答案 1 :(得分:1)

arheops已经击中了大选。他很酷。或者,如果您的手机支持手机上的XML浏览/ Java应用程序,您也可以使用自定义SIP标头提供第二个身份验证因素。因此,手机具有非旋转RSA密钥,用于第一个身份验证因素,然后动态执行对您的身份验证服务器的CHAP样式调用,以检索寿命较短的“go key”,该密钥包含在自定义SIP头中。没有时间有效的标头,没有呼叫权限。 如果您可以推导出双因素身份验证方案,其中一个因素是RSA / DSA密钥,那么您可能已经足够安全了。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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