999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于LDAP的SIP服務器PAM認證的解決方案

2007-01-01 00:00:00陳業綱
計算機時代 2007年3期

摘要:SIP協議是應用層會話控制協議,具有簡單、可擴展和分布式的特點。LDAP目錄作為一種非關系型數據庫,可以簡化查詢的步驟,PAM就是在應用程序和下層的認證模塊之間加入一個抽象層,使得上層應用和底層認證相互獨立。文章提出了通過LDAP目錄與PAM結合來實現SIP服務器的認證方案,并利用pam_ldap模塊實現了SIP服務器的LDAP認證。

關鍵詞:SIP;PAM;LINUX;LDAP

0引言

SIP(Session Inidation Protoc01)是1ETF制定的面向Intemet會議和電話的信令協議。該協議是一個基于文本的、用于多方多媒體通信的應用層控制協議,獨立于底層傳輸協議TCP/UDP/SCTP,用于建立、修改和終止IP網上的雙方或多方多媒體會話。SIP系統由用戶代理、SIP代理服務器、重定向服務器、SIP注冊服務器等4部分組成。在設計SIP服務器中,對于SIP用戶代理的認證和管理是一個非常重要的問題。目前,通用的解決辦法是在SIP代理服務器端采用數據庫來專門存儲用戶數據。SIP服務器需要DBMS的支持,因此需要對每一個數據庫服務器進行單獨的設計,難以與現有用戶資料庫進行整合,從而增大了管理成本。在基于SIP的遠程醫療系統中,為了解決這一問題,提出了LDAP來進行認證的機制。

1 LDAP目錄數據庫與PAM認證模塊及其系統框架

LDAP(Lightweight Directory Access Protoc01)——輕量級目錄訪問協議是一種基于X.500標準的、跨平臺的目錄服務,得到了業界的廣泛認可。LDAP目錄是一種非關系型數據庫,可以存儲各種類型的數據:電子郵件地址、郵件路由信息、人力資源數據、公用密匙、聯系人列表等。把LDAP目錄作為系統集成中的一個重要環節,可以簡化查詢,甚至連主要的數據源都可以放在任何地方。

PAM(P1uggable Authentication Modules.)——可插入式認證模塊,最初是Sun公司為其Solaris操作系統開發的安全認證架構,該模塊采用一種用于將各種底層認證模塊與上層應用無縫集成的安全機制。PAM的核心就是在應用程序和下層的認證模塊之間加入一個抽象層,使得上層應用獨立于底層認證。這種與上層平臺和算法的獨立性使得我們可以部署各種各樣的安全機制,而不需要修改任何應用層代碼。該模塊具有認證管理、賬號管理、會話管理和密碼管理等功能。PAM通過提供一些DLL和API,將應用程序和所需的認證方式分開,使管理員能夠靈活選擇認證方式而無需更改應用程序。

本系統主要由SIP用戶代理、SIP服務器和LDAP服務器等3部分組成。SIP服務器具有雙重功能,一是通過SIP協議實現SIP客戶端間的通信,二是實現LDAP客戶端與LDAP服務器端的通信(執行實際的認證工作)。該系統的工作機制如圖l所示。

2認證系統實現方案

2.1配置LDAP服務器

LDAP服務器用于存儲用戶的各種信息,是LDAP認證系統中的重要元素。OpenLDAP是最通用的一種LDAP服務器軟件。openLDAP服務器的配置文件如下:

(1)建立Linux用戶賬號

使用UltraEdit建立一個文本文件,文件名稱myusers.1ist內容如下:

userl 1111111

user2 1111111

l

userl0 1111111

注意:第一個字段為使用者名稱;第二個字段為預設密碼,中間必須用空格隔開。然后使用文本編輯建立另外一個文本文件,文件名稱add_users.sh,內容如下:

#t/bin/bash

for i jn’awk‘{print$1)t users.Iist、do

useradd$i

grep\"\<$i\>\"users.1ist I awk'f.print$2)。Ipasswd-stdin$i

done

建立Linux用戶賬號:

#chmod 775 add-usem.sh

#./add-usem.sh

(2)修改缺省配置文件:/etc/openladp/slapd.conf

database baogxm

suffix\"dc=fulingshiyuan,dc=com”一條記錄所屬區域

rootdn“cn=Admin,dc=fulingshiyuan,dc=com”

rootpw 6666666#定義LDAP根管理員的密碼

(3)將原有Linux賬號轉為LDIF文件

原有Linux服務器上有userl-userl0這些使用者賬號,密碼均為]llllll。下面是轉換的步驟:

#cdlusdsharel fulingshiyuan/migmtion#轉換文件的目錄#

#vi migrate_common.ph

$DEFAULT_MAIL_DOMAIN=“fulingshiyuan.com”:

Default base

$DEFAULT_BASE=“dc=fulingshiyuan。dc=COrn”:

#./migmte_passwd.plletclpasswd>1worktmp/user.Id.f

#./migrate_group.plletclgroup>1worktmp/group.Idif

(4)建立fulingshiyuan.1dif,ou_people.1dif,ou_group.Idif三個文件

#cat e fulingshiyuan.Idif

dn:dc=fulingshiyuan,dc=com

dc:fulingshiyuan

objectClass:dcObject

objectClass:organizationalUnit

ou:fulingshiyuan.com

#cat ou_people.ldif

dn:ou=people,dc=fulingshiyuan,dc=com

objectclass:organizationalunit

ou:people

#cat ou_group.1dif

dn:ou=group,dc=fulingshiyuan,dc=com

objectclass:organizationalunit

ou:group

(5)轉換原有Linux賬號至OpenLDAP服務器上

#slapadd-vl fulingshiyuan.Idif

added:\"dc=fulingshiyuan,dc=corn\"(.00000001)

#slapadd-vl ou_people.Idif

added:\"ou。people,dc=fulingshiyuan,dc=com\"(、00000002)

#Slapaddwl ou_group.1dif

added:\"ou=group,dc=fulingshiyuan,dc=com\"(、00000043)

#slapadd-vl user.ldif

#slapaddovl group.Idif

(6)啟動本地LDAP服務器

在RedHat9下,該命令為/etc/rc.d/init.d/ldap start。

(7)初始化LDAP數據庫

若以上配置文件正確無誤,則可使用命令/etc/rc.d/init.d/Idap或/etchnit.d/ldap啟動LDAP服務器。之后,就可以向LDAP數據庫中添加用戶數據了。

2.2配置PAM_LDAP模塊

雖然多數的Linux中自帶了PAM,但為了讓PAM能夠更好地支持LDAP認證,必須下載軟件包PAM_LDAP。PAM庫可通過本地的系統配置文件/etc/pam.conf目錄下的一些配置文件來設置,而模塊則以動態可加載目標文件的形式保存在/usr/lib/security目錄中。具體配置如下:

(1)在/etc/pam.conf文件中配置如下:

siD auth requiredlusdliblsecuritylpam_ldap.so

siD account requiredlusrlliblsecuritylpam_ldap.so

sip代表服務的名稱;auth和account分別代表認證模塊和記賬模塊;控制標志required表明當某個模塊返回—個失敗響應時,認證失敗,但是PAM將繼續處理其他模塊;pam_ldap.so指定了可插入認證模塊的路徑。

(2)編輯/etc/openldap/ldap.conf配置文件,使LDAP客戶端能夠讀該文件的內容,并與服務器端進行聯系。在/etc/openldap/ldap.conf文件中配置如下:

host 210.41.35.200

//定義LDAP服務器,可以用主機名或IP地址

base=dc:fulingshiyuan.dc=edu

//定義要查詢的目錄的根

2.3 SIP服務器的PAM認證實現方案

PAM框架提供了一系列接口與上層應用程序通信。具體接口如下:

管理性接口每組PAM事務從pam_start()開始,結束于pam_end()函數。接口pam_get_item()和pam set item()用來讀寫與PAM事務有關的狀態信息。pam_auth()用來進行認證。pam_acct_mgmt()檢查受鑒別的用戶所持賬戶是否有權登錄系統,以及該賬戶是否已過期等。同時,pam_str()可用于輸出PAM接口的出錯信息。

程序與模塊間的通訊接口在應用程序初始化期間,某些諸如用戶名之類的數據可以通過pare_start()將其存放在PAM接口層中,以備將來底層模塊使用。另外,底層模塊還可以使用pam_putenv()向應用程序傳遞特定的環境變量,應用程序利用pam_getenv()和pam_getenvlist()讀取這些變量。

用戶與模塊間的通訊接口pam_start()函數可以通過會話式的回調函數,讓底層模塊通過它們讀寫模塊相關的認證信息,比如以應用程序所規定的方式提示用戶輸入口令。

模塊間通訊接口盡管各模塊是獨立的,但是它們仍然能夠通過pare_get_item()和pam_set_item0接口共享某些與認證會話有關的公用信息,諸如用戶名、服務名、口令等。此外,這些API還可以用于在調用pam_start()后,讓應用程序修改狀態信息。

讀寫模塊狀態信息的接口接口pam_g~dma()和pam set_data()用以按照PAM句柄要求訪問和更新特定模塊的信息。此外,還可以在這些模塊后附加一個清除數據函數,以便當調用pam_end()時清除現場。

具體流程如下:

(1)程序開始。

(2)如果pam_start()調用成功,則轉向第3步,否則第6步。

(3)如果pam_auth()調用成功,則轉向第4步,否則第6步。

(4)如果pam_acct_mgnt()調用成功,則轉向第5步,否則第6步。

(5)如果pam_end()調用成功,則執行retval=0,否則第7步。

(6)retval=l

(7)返回,程序結束。

部分核心代碼如下:

struct pam_conv convstn={

misc_conv,/*built in conversation function*/

NULL}:

lnl Authenticate(const char*uname){

pam_handlej*hPAM=NULL;/*Handle for use with a¨PAM

functions*/

intrslt=0:

inl retval=-1:

rslt=pam_start(”sip\",uname,convstn,hPAM);

/*The first parameter is the service name used in pam.conf*/

if(rslt!=PAM_SUCCESS){retumretval;)

rslt=pam_auth(hPAM,0);/*authenticate the user*/

if(rslt!=PAM_SUCCESS){return retval;)

rslt=pam_acct_mgmt(hPAM,0);/*does the user have access*/

if(rslt!=PAM_SUCCESS){return renal;)

if(pam_end(hPAM,rslt)!=PAM_SUCCESS)(

printf(“PAM cleanup failed.”);

return retval;

}

return O:

}

3結束語

構建SIP服務器是利用SIP協議實現可視化遠程醫療會診系統的第一步,目前已實現,在此基礎上利用PAM提供的接口函數,使用pam_ldap模塊實現了SIP服務器的LDAP認證M。實踐證明,該方法與現有用戶資料庫整合,極大地降低了系統的管理成本,具有很好的可擴展性。

(注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。)

主站蜘蛛池模板: 欧美人人干| 亚洲视频欧美不卡| 国产精品午夜福利麻豆| 色悠久久综合| 亚洲欧美成人综合| 国产97公开成人免费视频| 国产v精品成人免费视频71pao | 九九九精品视频| 无码专区国产精品一区| 国产精品精品视频| 日韩毛片基地| 青草视频久久| 成年A级毛片| 国产不卡网| 波多野结衣在线se| 国产粉嫩粉嫩的18在线播放91| 伊人久久大香线蕉影院| 亚洲AⅤ永久无码精品毛片| 极品国产在线| 伊人久久福利中文字幕| 伊人婷婷色香五月综合缴缴情| 中国国产A一级毛片| 99视频只有精品| 尤物成AV人片在线观看| 狠狠色成人综合首页| 又黄又湿又爽的视频| 亚洲黄色成人| 亚洲国产成人久久精品软件 | a级毛片免费看| www.91在线播放| 精品久久高清| av天堂最新版在线| 色哟哟国产精品一区二区| 免费看黄片一区二区三区| 久久香蕉国产线| 亚洲无码高清一区二区| 久久青草视频| 成人福利在线免费观看| 天堂久久久久久中文字幕| 国产91无毒不卡在线观看| 国产精品永久不卡免费视频| 中文字幕在线播放不卡| 亚洲精品在线91| 91免费观看视频| 中文字幕精品一区二区三区视频| 国产自在线拍| 老司机精品99在线播放| 成年人免费国产视频| 久久精品嫩草研究院| 久久先锋资源| 伊人欧美在线| 日韩精品少妇无码受不了| 日本一本在线视频| 亚洲国产av无码综合原创国产| 大学生久久香蕉国产线观看| 日韩av在线直播| 日韩a在线观看免费观看| 久久精品娱乐亚洲领先| 视频二区国产精品职场同事| 国产精品任我爽爆在线播放6080 | 日韩免费毛片视频| 国产在线91在线电影| 欧美一区日韩一区中文字幕页| 亚洲欧美在线精品一区二区| 精品三级网站| 99视频精品在线观看| 精品国产Ⅴ无码大片在线观看81| 日韩东京热无码人妻| 在线精品亚洲一区二区古装| 国产精品成人久久| 香蕉久久永久视频| 久久久久人妻一区精品| 国产伦片中文免费观看| 久久精品丝袜| 91香蕉视频下载网站| 婷婷丁香在线观看| AV无码一区二区三区四区| 亚洲日韩国产精品综合在线观看| 国产一区二区在线视频观看| 久久天天躁狠狠躁夜夜2020一| 日本在线亚洲| 五月婷婷综合色|