Sofia-SIP辅助文档十二 - Sofia SIP用户代理库 - "iptsec" - 认证模块

本文介绍了iptsec模块如何为HTTP和SIP协议提供基本和摘要认证接口,并详细解释了服务器和服务端认证过程,以及客户端如何使用这些接口进行认证。

http://sofia-sip.sourceforge.net/refdocs/iptsec/index.html翻译自官网的这张网页。


模块元信息

iptsec模块提供HTTP Basic和Digest认证方式的接口,会在HTTP和SIP协议中使用。这些接口中既包括服务端使用的接口和也包括客户端使用的接口。

联系人:
Pekka Pessi < Pekka.Pessi@nokia-email.address.hidden>
状态:
Sofia SIP Core library
许可:
LGPL

服务端授权认证

<sofia-sip/auth_module.h>头文件中定义了服务端响应来自客户端的授权认证接口。服务端创建好认证模块后,通常的认证操作足够简单:

  1. 服务器利用来自请求的信息初始化auth_status_t结构体
  2. 服务器调用auth_mod_method()函数
  3. 服务器检查auth_status_t结构体的状态,如果认证失败返回错误响应
  4. 服务器处理认证请求。

如果操作是异步的,当调用auth_mod_method()函数返回时一个预备的结果已经保存在auth_status_t结构体内了。异步方式下,可以将一个回调函数赋给结构体。当认证完成后回调函数会被调用。可以使用auth_mod_cancel()函数取消还未结束的认证操作。

服务端侧认证参数

服务器使用auth_mod_create()函数创建认证模块时,可指定不同的参数来影响认证协议和算法。这些参数tags在<sofia-sip/auth_module.h>头文件中定义。最重要的参数有这么一些:

客户端认证用户

<sofia-sip/auth_client.h>头文件中定义了客户端使用的与服务端一道认证用户的接口。因为可能存在多个服务器和代理需要认证,所以客户端侧认证信息用auth_client_t对象列表表示。客户端侧的操作是这样的:

  1. 发送请求
  2. 获取401或407响应和挑战
  3. 使用auc_challenge()函数将挑战放入一个列表内
  4. 与客户交互获取凭证(用户名和密码),使用auc_credentials()auc_all_credentials()函数将凭证放入列表
  5. auc_authorization()函数认证一个请求(将凭证header放入请求中),然后重新发送请求

如果有多个认证realm需要凭证,应用程序在使用auc_all_credentials()函数时必须提供相应的realm。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值