Weblogic Portal 8.1:整合LDAP
LDAP的整合總是有一點(diǎn)神秘,但是又常常會(huì)碰到的問(wèn)題。
或許是因?yàn)橄嚓P(guān)書籍以及討論比較少,所以大部分的人對(duì)於這種技術(shù)並不如RDBMS那般的熟悉;但無(wú)形之中,LDAP在今天的IT系統(tǒng)當(dāng)中仍然扮演相當(dāng)重要的角色,比如說(shuō)使用者帳號(hào)的存放以及管理。
今天的文章當(dāng)中,我準(zhǔn)備要介紹怎麼將OpenLDAP整合到Weblogic Server 8.1的認(rèn)證(Authentication)機(jī)制;為了讓各位能夠更容易了解整合的原理,我也會(huì)稍微介紹JAAS以及Weblogic Security Framework(說(shuō)實(shí)話,JAAS本身就可以寫一本書了,所以有空再另外詳述)。至於Portal的部分,我則會(huì)介紹怎麼更進(jìn)一步的設(shè)定LDAP整合,以及怎麼樣設(shè)定LDAP來(lái)達(dá)到巢狀使用群組(Nested Group)權(quán)限的繼承效果。
有玩過(guò)Weblogic Server 8.1的朋友們應(yīng)該很熟悉Weblogic Admin Console的操作介面;在Admin Console當(dāng)中我們可以設(shè)定幾乎所有Weblogic可調(diào)整的參數(shù)。當(dāng)然,由於今天講的是LDAP,所以我們現(xiàn)在感興趣的是如何在Admin Console當(dāng)中設(shè)定安控相關(guān)的參數(shù),以便將使用者認(rèn)證的LDAP查詢機(jī)制整合到Weblogic裡面來(lái)。
首先,啟動(dòng)Weblogic Server。當(dāng)Server啟動(dòng)完畢後,進(jìn)入http://localhost:7001/console ,預(yù)設(shè)值可以用weblogic/weblogic帳號(hào)進(jìn)行登入。
在這個(gè)系統(tǒng)啟動(dòng)→登入的過(guò)程當(dāng)中,其實(shí)Weblogic內(nèi)部的安控引擎已經(jīng)替我們做了很多事情;首先在啟動(dòng)過(guò)程當(dāng)中,Weblogic會(huì)詢問(wèn)Administrator權(quán)限的帳號(hào)以及密碼;而透過(guò)這套帳號(hào)的認(rèn)證,Weblogic內(nèi)部的安控系統(tǒng)會(huì)決定這個(gè)帳號(hào)權(quán)限所能夠啟動(dòng)的系統(tǒng)服務(wù)。
另 外,由於Admin Console本身就是一個(gè)採(cǎi)用Form-based Authentication的J2EE Web Application,而JAAS-based的認(rèn)證會(huì)將認(rèn)證資料傳遞給底層做苦工的Weblogic Security Framework;而Weblogic Security Framework則會(huì)根據(jù)你原來(lái)的設(shè)定,將你所提供的帳號(hào)密碼提交給Authentication Provider進(jìn) 行比對(duì),比對(duì)成功才允許進(jìn)入Admin Console。至於什麼是Authentication Provider呢?簡(jiǎn)單來(lái)說(shuō),Authentication Provider就是JAAS認(rèn)證機(jī)制和實(shí)體認(rèn)證儲(chǔ)存機(jī)制的一個(gè)媒介;透過(guò)這種媒介,理論上Weblogic可以和任何一個(gè)系統(tǒng)進(jìn)行帳號(hào)密碼的比對(duì)以及共 享。。
大家可能會(huì)很好奇:Weblogic是怎麼去儲(chǔ)存預(yù)設(shè)的帳號(hào)以及密碼?Tomcat的預(yù)設(shè)做法是用xml儲(chǔ)存並且load到Memory Realm,那Weblogic的做法又是什麼呢?
其 實(shí)Weblogic本身Bundle了一套小型的LDAP引擎。每一個(gè)你所啟動(dòng)的Weblogic Server instance都會(huì)有一個(gè)屬於自己的LDAP資料庫(kù),但是通常你能夠去修改編輯的只有Admin Server的LDAP資料庫(kù);其他的Managed Server會(huì)從Admin Server把最新的資料複製過(guò)來(lái)。
對(duì)應(yīng)到剛剛 Authentication Provider的話題。各位應(yīng)該已經(jīng)猜到了:Weblogic有一個(gè)DefaultAuthentication Provider會(huì)和內(nèi)嵌的LDAP進(jìn)行帳號(hào)以及密碼的比對(duì);所以如果我們想要利用OpenLDAP來(lái)取代原本W(wǎng)eblogic內(nèi)建的LDAP,標(biāo)準(zhǔn)的做 法就是幹掉原來(lái)的Authentication Provider,而以Weblogic內(nèi)建的OpenLDAP Authentication Provider來(lái)取而代之。但是有一點(diǎn)必須要注意!在幹掉Weblogic內(nèi)建的LDAP之前,必須將裡頭的帳號(hào)密碼複製到OpenLDAP當(dāng)中,否則 待會(huì)會(huì)連Weblogic都無(wú)法啟動(dòng)。
如果覺(jué)得還要複製這些帳號(hào)很麻煩,其實(shí)有比較簡(jiǎn)單的方法:讓這兩個(gè)Authentication Provider共存!只是還是必須做點(diǎn)小調(diào)整。
一 個(gè)Weblogic Domain可以同時(shí)存在多個(gè)Security Realm,但是只有一個(gè)是Active的;而一個(gè)Security Realm裡頭可以同時(shí)有好多個(gè)並行的Authentication Provider/LoginModule(是的,Authentication Provider實(shí)際上底層就是對(duì)應(yīng)到一個(gè)LoginModule);根據(jù)JAAS的規(guī)格,我們要透過(guò)REQUIRED、REQUISITE、 SUFFICIENT、OPTIONAL等控制旗標(biāo)來(lái)告訴Weblogic,在一個(gè)以上的Authentication Provider環(huán)境中,到底哪些Authentication Provider說(shuō)得話才算話(這些旗標(biāo)的意義請(qǐng)看Java SDK的Javadoc)。簡(jiǎn)單來(lái)說(shuō),如果我們希望在不同的Authentication Provider之間產(chǎn)生聯(lián)集的效果,那我們最好把這些Provider的控制旗標(biāo)設(shè)定成OPTIONAL。
哇!是不是有點(diǎn)給他小複雜?休息一下,我們?cè)倮^續(xù)往下看。
剛剛我們介紹了整合OpenLDAP到Weblogic的原理和做法,接下來(lái)我們就來(lái)看看剛剛這些設(shè)定對(duì)Weblogic Portal來(lái)說(shuō)有什麼意義。
Weblogic Portal 8.1的權(quán)限控管機(jī)制是把Weblogic Server的功能加以強(qiáng)化;這也就是說(shuō),其實(shí)Portal和Server之間的權(quán)限控管機(jī)制是共享的。所以,當(dāng)你在Weblogic Server設(shè)定了一組OpenLDAP的Authentication Provider時(shí),Portal也可以輕易存取這些資源,並且和強(qiáng)大的Entitlement功能整合,讓群組的權(quán)限設(shè)定能夠有繼承的效果。什麼是群組權(quán)限的繼承?我們用以下的一個(gè)場(chǎng)景來(lái)描述。
假設(shè)我們今天有一個(gè)場(chǎng)景,希望建立一個(gè)群組叫做信用卡使用戶,以及另外三個(gè)子群組,個(gè)別是銀卡用戶、金卡用戶、白金卡用戶。 只要我們?cè)贚DAP裡頭正確的設(shè)定信用卡使用戶的groupofnames類別,將member屬性設(shè)定成銀卡、金卡以及白金卡等群組的DN,那 Portal就會(huì)自動(dòng)在進(jìn)行Entitlement檢查的時(shí)候,讓銀卡、金卡以及白金卡的群組能夠繼承信用卡使用戶的權(quán)限。這是一個(gè)非常實(shí)用的功能!運(yùn)用 這種功能,你可以設(shè)定一個(gè)信用卡用戶才能看得到的專屬頁(yè)面,然後在這個(gè)頁(yè)面裡頭提供針對(duì)銀卡、金卡、白金卡等不同等級(jí)的Portlet資訊。
或許是因?yàn)橄嚓P(guān)書籍以及討論比較少,所以大部分的人對(duì)於這種技術(shù)並不如RDBMS那般的熟悉;但無(wú)形之中,LDAP在今天的IT系統(tǒng)當(dāng)中仍然扮演相當(dāng)重要的角色,比如說(shuō)使用者帳號(hào)的存放以及管理。
今天的文章當(dāng)中,我準(zhǔn)備要介紹怎麼將OpenLDAP整合到Weblogic Server 8.1的認(rèn)證(Authentication)機(jī)制;為了讓各位能夠更容易了解整合的原理,我也會(huì)稍微介紹JAAS以及Weblogic Security Framework(說(shuō)實(shí)話,JAAS本身就可以寫一本書了,所以有空再另外詳述)。至於Portal的部分,我則會(huì)介紹怎麼更進(jìn)一步的設(shè)定LDAP整合,以及怎麼樣設(shè)定LDAP來(lái)達(dá)到巢狀使用群組(Nested Group)權(quán)限的繼承效果。
有玩過(guò)Weblogic Server 8.1的朋友們應(yīng)該很熟悉Weblogic Admin Console的操作介面;在Admin Console當(dāng)中我們可以設(shè)定幾乎所有Weblogic可調(diào)整的參數(shù)。當(dāng)然,由於今天講的是LDAP,所以我們現(xiàn)在感興趣的是如何在Admin Console當(dāng)中設(shè)定安控相關(guān)的參數(shù),以便將使用者認(rèn)證的LDAP查詢機(jī)制整合到Weblogic裡面來(lái)。
首先,啟動(dòng)Weblogic Server。當(dāng)Server啟動(dòng)完畢後,進(jìn)入http://localhost:7001/console ,預(yù)設(shè)值可以用weblogic/weblogic帳號(hào)進(jìn)行登入。
在這個(gè)系統(tǒng)啟動(dòng)→登入的過(guò)程當(dāng)中,其實(shí)Weblogic內(nèi)部的安控引擎已經(jīng)替我們做了很多事情;首先在啟動(dòng)過(guò)程當(dāng)中,Weblogic會(huì)詢問(wèn)Administrator權(quán)限的帳號(hào)以及密碼;而透過(guò)這套帳號(hào)的認(rèn)證,Weblogic內(nèi)部的安控系統(tǒng)會(huì)決定這個(gè)帳號(hào)權(quán)限所能夠啟動(dòng)的系統(tǒng)服務(wù)。
另 外,由於Admin Console本身就是一個(gè)採(cǎi)用Form-based Authentication的J2EE Web Application,而JAAS-based的認(rèn)證會(huì)將認(rèn)證資料傳遞給底層做苦工的Weblogic Security Framework;而Weblogic Security Framework則會(huì)根據(jù)你原來(lái)的設(shè)定,將你所提供的帳號(hào)密碼提交給Authentication Provider進(jìn) 行比對(duì),比對(duì)成功才允許進(jìn)入Admin Console。至於什麼是Authentication Provider呢?簡(jiǎn)單來(lái)說(shuō),Authentication Provider就是JAAS認(rèn)證機(jī)制和實(shí)體認(rèn)證儲(chǔ)存機(jī)制的一個(gè)媒介;透過(guò)這種媒介,理論上Weblogic可以和任何一個(gè)系統(tǒng)進(jìn)行帳號(hào)密碼的比對(duì)以及共 享。。
大家可能會(huì)很好奇:Weblogic是怎麼去儲(chǔ)存預(yù)設(shè)的帳號(hào)以及密碼?Tomcat的預(yù)設(shè)做法是用xml儲(chǔ)存並且load到Memory Realm,那Weblogic的做法又是什麼呢?
其 實(shí)Weblogic本身Bundle了一套小型的LDAP引擎。每一個(gè)你所啟動(dòng)的Weblogic Server instance都會(huì)有一個(gè)屬於自己的LDAP資料庫(kù),但是通常你能夠去修改編輯的只有Admin Server的LDAP資料庫(kù);其他的Managed Server會(huì)從Admin Server把最新的資料複製過(guò)來(lái)。
對(duì)應(yīng)到剛剛 Authentication Provider的話題。各位應(yīng)該已經(jīng)猜到了:Weblogic有一個(gè)DefaultAuthentication Provider會(huì)和內(nèi)嵌的LDAP進(jìn)行帳號(hào)以及密碼的比對(duì);所以如果我們想要利用OpenLDAP來(lái)取代原本W(wǎng)eblogic內(nèi)建的LDAP,標(biāo)準(zhǔn)的做 法就是幹掉原來(lái)的Authentication Provider,而以Weblogic內(nèi)建的OpenLDAP Authentication Provider來(lái)取而代之。但是有一點(diǎn)必須要注意!在幹掉Weblogic內(nèi)建的LDAP之前,必須將裡頭的帳號(hào)密碼複製到OpenLDAP當(dāng)中,否則 待會(huì)會(huì)連Weblogic都無(wú)法啟動(dòng)。
如果覺(jué)得還要複製這些帳號(hào)很麻煩,其實(shí)有比較簡(jiǎn)單的方法:讓這兩個(gè)Authentication Provider共存!只是還是必須做點(diǎn)小調(diào)整。
一 個(gè)Weblogic Domain可以同時(shí)存在多個(gè)Security Realm,但是只有一個(gè)是Active的;而一個(gè)Security Realm裡頭可以同時(shí)有好多個(gè)並行的Authentication Provider/LoginModule(是的,Authentication Provider實(shí)際上底層就是對(duì)應(yīng)到一個(gè)LoginModule);根據(jù)JAAS的規(guī)格,我們要透過(guò)REQUIRED、REQUISITE、 SUFFICIENT、OPTIONAL等控制旗標(biāo)來(lái)告訴Weblogic,在一個(gè)以上的Authentication Provider環(huán)境中,到底哪些Authentication Provider說(shuō)得話才算話(這些旗標(biāo)的意義請(qǐng)看Java SDK的Javadoc)。簡(jiǎn)單來(lái)說(shuō),如果我們希望在不同的Authentication Provider之間產(chǎn)生聯(lián)集的效果,那我們最好把這些Provider的控制旗標(biāo)設(shè)定成OPTIONAL。
哇!是不是有點(diǎn)給他小複雜?休息一下,我們?cè)倮^續(xù)往下看。
剛剛我們介紹了整合OpenLDAP到Weblogic的原理和做法,接下來(lái)我們就來(lái)看看剛剛這些設(shè)定對(duì)Weblogic Portal來(lái)說(shuō)有什麼意義。
Weblogic Portal 8.1的權(quán)限控管機(jī)制是把Weblogic Server的功能加以強(qiáng)化;這也就是說(shuō),其實(shí)Portal和Server之間的權(quán)限控管機(jī)制是共享的。所以,當(dāng)你在Weblogic Server設(shè)定了一組OpenLDAP的Authentication Provider時(shí),Portal也可以輕易存取這些資源,並且和強(qiáng)大的Entitlement功能整合,讓群組的權(quán)限設(shè)定能夠有繼承的效果。什麼是群組權(quán)限的繼承?我們用以下的一個(gè)場(chǎng)景來(lái)描述。
假設(shè)我們今天有一個(gè)場(chǎng)景,希望建立一個(gè)群組叫做信用卡使用戶,以及另外三個(gè)子群組,個(gè)別是銀卡用戶、金卡用戶、白金卡用戶。 只要我們?cè)贚DAP裡頭正確的設(shè)定信用卡使用戶的groupofnames類別,將member屬性設(shè)定成銀卡、金卡以及白金卡等群組的DN,那 Portal就會(huì)自動(dòng)在進(jìn)行Entitlement檢查的時(shí)候,讓銀卡、金卡以及白金卡的群組能夠繼承信用卡使用戶的權(quán)限。這是一個(gè)非常實(shí)用的功能!運(yùn)用 這種功能,你可以設(shè)定一個(gè)信用卡用戶才能看得到的專屬頁(yè)面,然後在這個(gè)頁(yè)面裡頭提供針對(duì)銀卡、金卡、白金卡等不同等級(jí)的Portlet資訊。