2011年7月5日 星期二

[Oracle BPM/SOA 實務] 應用外部LDAP Server做為使用者資料來源

BPM的應用往往會應用企業內部現有使用者資訊,最通常會遇到的就是和企業內部的MS Active Directory、Sun iPlanet Directory、OpenLDAP、Oracle Internet Directory或Novell Directory Server...等LDAP Server整合。在單機測試環境中,你可以應用WebLogic Server本身內建的LDAP Server進行開發,但是當部署到線上系統的時候,架構規劃人員就需要思考如何介接上述的LDAP Server了。在之前的文章中,我已經有介紹過如何建構開發環境,並使用WebLogic內建LDAP Server,本文我們就來看看怎麼和外部的LDAP Server整合。

為了測試方便起見,我們使用OpenLDAP做為範例,關於OpenLDAP的簡單使用方式,你可以參考此連結,若你使用Windows作業系統進行開發測試,請到此處下載Windows版本。另外,你會需要一個LDAP Client方便產生並修改使用者資料,我們這裡使用的是JXplorer,你可以使用任何熟悉的工具。

這裡我所使用的範例的base DN是dc=oracle,dc=com,如果你是重新建立一個新的OpenLDAP環境,可以修改slapd.conf檔案來去指定相關的suffixrootdnrootpw參數。如果你是使用現存環境的話,記得在接下來的範例之中,依據你環境中的base DN與密碼進行修正。


新建使用者與群組

下面我提供了一個簡單的LDIF檔案,你可以做些簡單的修改,並透過JXplorer將他餵入OpenLDAP之中:


dn: ou=people,dc=oracle,dc=com
ou: people
objectClass: top
objectClass: organizationalUnit


dn:cn=user1,ou=people,dc=oracle,dc=com
objectClass:inetOrgPerson
cn:user1
sn:user1
uid:user1
userPassword:welcome1



dn:cn=user2,ou=people,dc=oracle,dc=com
objectClass:inetOrgPerson
cn:user2
sn:user2
uid:user2
userPassword:welcome1


dn: ou=groups,dc=oracle,dc=com
ou: groups
objectClass: top
objectClass: organizationalUnit


dn: cn=testGroup,ou=groups,dc=oracle,dc=com
objectClass: top
objectClass: groupOfNames
cn: testGroup
member: cn=user2,ou=people,dc=oracle,dc=com



請注意,我在這裡面建立了兩個OU,一個DN是ou=people,dc=oracle,dc=com,代表了使用者,另一個是代表使用者群組的ou=groups,dc=oracle,dc=com。同時,我順便建立了user1user2兩個使用者以及一個testGroup使用者群組。

從JXplorer你將看到這樣的畫面資訊:














特別注意,在BPM應用之中,你會用到很多額外的資訊,像是使用者的姓名、顯示名稱、職稱、Email、電話以及主管是誰...等等。因此,這些使用者所設定的objectClass最好是指定為inetOrgPerson。在簡單的建立了使用者之後,建議你可以透過LDAP Client連進去修改使用者完整的資訊。

這樣你的LDAP Server環境已經準備完成了,準備設定BPM Server的連接了!


設定BPM Server

首先,請登入WebLogic Console,並選擇【安全範圍】-->【myrealm】-->【提供者】。首先,你會看到兩個預設的認證提供者【DefaultAuthenticator】與【DefaultIdentityAsserter】,此時請按下新增按鍵,如下圖所示,新建一個OpenLDAP的認證提供者。

















按下確定鍵之後,你會看到新的認證提供者已經產生了,請點選這個新的提供者,並選擇【提供者特有】進行設定:


















在連線部分,請指定你OpenLDAP Server的主機hostname與port,並且指定所使用的密碼。
接下來是一堆我有修改的設定,請也依據修改:


使用者
使用者基本 DN: ou=people, dc=oracle, dc=com
名稱篩選中的使用者: (&(cn=%u)(objectclass=inetOrgPerson))
使用者物件類別: inetOrgPerson


群組
群組基本 DN: ou=groups, dc=oracle, dc=com
名稱篩選中的群組: (&(cn=%g)(objectclass=groupOfNames))


靜態群組
靜態群組物件類別: groupOfNames
成員 DN 篩選中的靜態群組 DN:(&(member=%M)(objectclass=groupOfNames))

完成之後,記得將你新建認證提供者的【控制旗標】設定為【SUFFICIENT】,如下圖所示:



















同時,請將DefaultAuthenticator的控制旗標設定為【OPTIONAL】,並且重新排序各個提供者,將你所新建的認證提供者放到最上端。


















重新啟動Server,這次你在myrealm之中,可以看到來自不同認證提供者的使用者:



恭喜你! 所以設定已經完成,你可以試試看用user1登入BPM Composer了! 你可以試試看在新的使用者上面測試之前我們介紹過的Multi-Tier審核流程囉!

沒有留言: