Asterisk的SIP type和身份认证
来源:互联网 发布:打码网站源码 编辑:程序博客网 时间:2024/05/01 21:57
转自:http://blog.csdn.net/softdog/article/details/5614138
在Asterisk中对某个peer的类型分为3种:peer, user和friend
看看voip-info对这三种类型的解释
- peer: A SIP entity to which Asterisk sends calls (a SIP provider for example). If you want a user (extension) to have multiple phones, define an extension that calls two SIP peers. The peer authenticates at registration.
- user: A SIP entity which places calls through Asterisk (A phone which can place calls only). Users authenticate to reach services with their context.
- friend: An entity which is both a user and a peer. This make sense for most desk handsets and other devices. Asterisk will create two objects, one peer and one user, with the same name.
If a _peer_ is defined with host=dynamic it is allowed toregister with Asterisk to tell Asterisk where it can be found (IP address/host name) and that it is reachable from now on.
简单的说,在这篇文档里, type=peer定义对方是一个服务提供者, 它允许你的Asterisk通过这里定义的服务商打电话; 而user则定义对方是你的一个客户端, 允许对方通过你的Asterisk打电话. friend就是两者兼有.
但是实际情况是什么? 试试这样的定义:
[1001]
username=1001
secret=xxxxx
host=dynamic
port=5060
type=peer
context=from-extensions
然后用一个SIP客户端来尝试注册到你的Asterisk上, what happened?
你会发现客户端也能注册上!
其实type的真正意义在于Asterisk怎么去处理发往外部和来自外部的请求.
type=peer
如果type是peer,有两层含义.
1. 可以将对方作为一个SIP Service Provider, 允许你的Asterisk通过对方进行呼出.
2. 如果对方在逻辑上是一个客户端, asterisk将根据传入的Invite请求来对对方进行身份验证, 但需要注意的是这里的验证不是通过username和secret, 而是通过对方的address和port. 这里分两种情况:
* 对方的address和port没有匹配到你在sip.conf中对任何一个peer的设置, 如果你的Asterisk允许匿名呼入(allowguest=yes), 那么, 该呼入将被传到在sip.conf的general配置中的context上. 要注意的是呼入到context中的哪个extension由主叫方决定, 如果没有指定主叫号码, 将被转到s extension上.如果不允许匿名呼入, 直接拒绝该呼入.
* 对方的address和port匹配到了任何一个sip.conf种的peer设置, 那么改呼入将被传到该peer指定的context上.
Asterisk还提供了一个insecure参数来配置对peer呼入的身份验证方式.
insecure=port|invite
port: Asterisk忽略对方的port, 只根据对方的address来验证某个peer, Asterisk收到对方的Invite后, 会发送SIP/2.0 401 Unauthorized到对方, 要求对方发送认证信息, 但事实上对方返回回来的认证信息不会被真正使用.
invite: Asterisk对初始Invite不进行验证. 这意味着Asterisk直接使用客户端传入的Invite包中的信息尝试进行验证而不会发送SIP/2.0 401 Unauthorized包到对方
type=user
根据来源Invite包中的用户和密码信息来认证,所以对方不能也不需要Register到你的Asterisk服务器上.
需要额外说明一点的是Register, 如果某个peer的host设置为dynamic, 那么Asterisk允许客户端通过Register的方式来告诉Asterisk对方的地址和端口.
- Asterisk的SIP type和身份认证
- Asterisk的SIP type和身份认证
- Asterisk的SIP type和身份认证
- Asterisk的SIP type和身份认证
- Asterisk的type类型和身份认证
- Asterisk的SIP认证
- 关于SIP服务器opensips和Asterisk比较的好文章
- ssl协议的身份认证和数据传输
- Asterisk对SIP的验证
- Shiro 的身份认证
- sip的认证过程
- 理解SIP的认证
- 理解SIP的认证
- 理解SIP的认证
- 计算机身份认证的技术分析和比较
- 身份认证部分遇到的问题和解决方案
- 和身份认证相关的几个协议/标准
- python的requests快速上手、高级用法和身份认证
- GPS数据格式转换
- win7下安装配置apache+php+mysql环境
- Entity Framework 全面教程详解(转)
- C++内存池的极简版实现
- 各种AJAX方法的使用比较(3)
- Asterisk的SIP type和身份认证
- Opencv网站
- 各种AJAX方法的使用比较(4)
- windows+apache+php5.2.x+imagick安装配置
- PHP操作IP地址在mysql中的存储方式
- Android 高级绘图
- hdu 1011 树形背包
- 金山WPS与微软Office20年之争
- 郭静:马云退休和你有关吗?