Python 自由开关JWT集成

Python 自由开关JWT集成,python,lua,jwt,sip,freeswitch,Python,Lua,Jwt,Sip,Freeswitch,我正在尝试在sip客户端和FS系统之间进行集成。SIP客户端在身份验证阶段发送JWT令牌作为密码 为了对客户端进行身份验证,FS使用密码字段创建一个目录条目,并将其与从客户端接收的密码进行比较,在我的情况下,我需要通过获取显示为密码的“令牌”来覆盖此行为,验证它并将验证结果的答案返回给FS,以便它知道是接受还是拒绝用户 我不知道如何在不更改源代码的情况下重写FS中的这种行为。我更愿意编写python或lua插件来处理这个问题 非常感谢,似乎应该使用以下解决方案 为了允许FS使用JWT进行身份验证

我正在尝试在sip客户端和FS系统之间进行集成。SIP客户端在身份验证阶段发送JWT令牌作为密码

为了对客户端进行身份验证,FS使用密码字段创建一个目录条目,并将其与从客户端接收的密码进行比较,在我的情况下,我需要通过获取显示为密码的“令牌”来覆盖此行为,验证它并将验证结果的答案返回给FS,以便它知道是接受还是拒绝用户

我不知道如何在不更改源代码的情况下重写FS中的这种行为。我更愿意编写python或lua插件来处理这个问题


非常感谢,

似乎应该使用以下解决方案

为了允许FS使用JWT进行身份验证,有必要将自定义头中的JWT从用户代理发送到FS。另外,向用户代理输入一些已知密码也很重要

当UA连接到FS以及使用lua脚本(xml处理程序脚本、xml处理程序绑定)动态构建目录时,可以通过读取自定义头字段来验证JWT并为用户提供正确的目录条目

如果JWT是有效的,那么将使用正确的密码(已知密码)允许FS继续操作,否则-将提供另一个无效密码,FS将断开连接


希望对某人有所帮助,

FreeSWITCH中有两个参数:

  • 接受盲身份验证:接受任何身份验证而不进行实际检查(对大多数人来说不是一个好功能)

    
    
  • auth调用:目录中的用户可以应用“auth acl”参数,以限制用户访问预定义的acl或CIDR

    <param name="auth-calls" value="$${internal_auth_calls}"/>
    
    
    
    值可以为“false”以禁用此配置文件上的身份验证,这意味着当调用传入配置文件时,将不会向调用方发送身份验证质询

  • 请多查查


    因此,现在您可以在调用和注册时调用lua脚本,该脚本实际检查注册情况,并使用自定义逻辑邀请。现在freeswitch将不执行任何身份验证。

    您能否更详细地阐述完整的工作流程?您可以通过mod_xml_curl动态生成FS目录条目,其中将包含动态密码字段。但这需要测试。另一种方法是使用Kamailio作为SIP注册器而不是FreeSWITCH。嗨,我们有一个使用PJSIP库的客户端,在AuthCredInfo结构(数据字段)中,我们将JWT令牌传递给FS。我们需要找到一种方法来验证令牌,而不是使用标准过程进行密码比较。基本上,我需要在用户名/密码上执行一个脚本,并向FS返回true或false,以便它知道用户是否被允许。我仍然认为kamailio更适合作为SIP注册器。如果有预算,我很乐意帮助设计和构建一个POC。如果需要,您可以很容易地找到我的联系人。如果FS没有任何其他方式来了解令牌,则看起来有效。我认为JWT令牌颁发者和FS能够访问相同的后端并了解有效令牌Hanks Stanislav。FS不知道身份验证服务器,它必须根据已签名且具有过期日期的令牌验证客户。它使过程更快,因为它不需要对该用户进行数据库查找。亲爱的Suren,感谢您的评论。它仍然需要我将JWT传递给自定义头中的FS。看来没有办法了。
    <param name="auth-calls" value="$${internal_auth_calls}"/>