Asterisk的SIP type和身份认证

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Asterisk的SIP type和身份认证

在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.

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 上. 如果不允许匿名呼入, 直接拒绝该呼入.

* 对方的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对方的地址和端口.

相关文档
最新文档