通常情况下,我们都不会用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")
。