通常情况下,我们都不会用opensips数据库的subscriber表中的账号和密码进行鉴权,而是使用项目业务系统的账号系统进行鉴权。因此需要对鉴权模块进行相关配置。
鉴权模块配置
配置URI模块
使用如下配置更改URI模块对应字段值,URI模块各个字段含义文档
1 | #### URI module |
配置鉴权Auth模块
通常情况下,我们都不会用opensips数据库的subscriber表中的账号和密码进行鉴权,而是使用项目业务系统的账号系统进行鉴权。也就是使用业务系统的数据库中的账号密码进行鉴权。如下图配置:
1 | #### AUTHentication modules |
关于m_user表中用户名列Name,密码列Password以及ha1列和ha1b列计算方法:
- 用户名列为注册的用户名
- 密码列为密码明文md5加密后的值,即md5(plaintext)作为
Password列的值 - ha1=md5(username:Domain:md5(plaintext) ) 在上面将Domain配置为
opensips.org - ha1b=md5(username@Domain:Domain:md5(plaintext))
例如:假设用户名为zhoulee,用户密码明文123456,
则Password的值为md5(123456)=e10adc3949ba59abbe56e057f20f883e,ha1= md5(zhoulee:opensips.org:e10adc3949ba59abbe56e057f20f883e),ha1b=md5(zhoulee@opensips.org:opensips.org:e10adc3949ba59abbe56e057f20f883e)。
对用户表授权
openSIPS使用的数据库默认为opensips,但在URI和Auth模块配置中,把用户表指向了my_user_db数据库的m_user表,所以要给MySQL的opensips用户开放权限:
1 | grant select on my_user_db.m_user to opensips@'localhost'; |
并同时在my_user_db数据库的version表中插入如下2条记录:
1 | insert into version(table_name, table_version) values('m_user', 7); |
配置代理鉴权和注册鉴权
修改proxy_authorize(realm, table)和www_authorize(realm, table)中的table字段subscriber为自定义鉴权数据表名m_user。
修改Route
将路由设置中的if(has_totag())和route[relay]函数中的is_method("INVITE")判断中添加UPDATE字段变成is_method("INVITE|UPDATE")。