使用者登錄聯合
當 user 和 group 資訊分散在多項登錄中時,會採取使用者登錄聯合。比方說,資訊可能位於兩個不同的 LDAP 中、相同 LDAP 的兩個子樹狀結構中、一個檔案中,或者使用者屬於某個系統。甚至資訊可能位於自訂使用者資料儲存庫中。藉由聯合登錄,就可以採統一方式,利用持續儲存資訊,來搜尋和使用這些分散的使用者資訊。利用聯合登錄,您可以使用統一的視圖,在 Liberty 中鑑別和授權使用者。
註: 快速入門安全 (quickStartSecurity)不能與其他使用者登錄聯合,例如,LDAP、基本、SAF 和自訂登錄。
如何聯合使用者登錄?
依預設,會聯合 LDAP 登錄。如果 server.xml 中配置了多項 LDAP 登錄,則會自動聯合這些登錄,而不需另行配置。它們可以是兩項獨立的 LDAP,或是相同 LDAP 中的兩個子樹狀結構。如果一或多項 LDAP 登錄配置了一或多項基本、SAF 或自訂登錄,也會聯合這些登錄,而不需另行配置。下列範例顯示與 LDAP 聯合的基本登錄:
<server description="Federation">
<featureManager>
<feature>appSecurity-2.0</feature>
<feature>servlet-3.0</feature>
<feature>ldapRegistry-3.0</feature>
</featureManager>
<basicRegistry id="basic" realm="SampleBasicRealm">
<user name="admin" password="password" />
<user name="user1" password="password" />
<user name="user2" password="password" />
<group name="memberlessGroup" />
<group name="adminGroup">
<member name="admin"/>
</group>
<group name="users">
<member name="user1"/>
<member name="user2"/>
</group>
</basicRegistry>
<ldapRegistry id="LDAP1" realm="SampleLdapIDSRealm" host="LDAPHOST1.ibm.com" port="389" ignoreCase="true"
baseDN="o=ibm,c=us"
ldapType="IBM Tivoli Directory Server"
searchTimeout="8m"
recursiveSearch="true">
</ldapRegistry>
</server>
如果您想將一或兩項基本登錄,與 SAF 或自訂登錄聯合,您可以在 appSecurity-2.0 特性之外,另外包含 federatedRegistry-1.0,如下列範例所示:
<feature>appSecurity-2.0</feature>
<feature>federatedRegistry-1.0</feature>
下列範例顯示兩項基本登錄的聯合:<server description="Federation">
<featureManager>
<feature>appSecurity-2.0</feature>
<feature>federatedRegistry-1.0</feature>
</featureManager>
<basicRegistry id="basic1" realm="SampleBasicRealm1">
<user name="admin" password="password" />
<user name="user1" password="password" />
<user name="user2" password="password" />
<group name="memberlessGroup" />
<group name="adminGroup">
<member name="admin"/>
</group>
<group name="users">
<member name="user1"/>
<member name="user2"/>
</group>
</basicRegistry>
<basicRegistry id="basic2" realm="SampleBasicRealm2">
<user name="user3" password="password123" />
<user name="user4" password="password123" />
<group name="memberlessGroup2" />
<group name="users2">
<member name="user3"/>
<member name="user4"/>
</group>
</basicRegistry>
</server>
可以將基本登錄新增至自訂的聯合儲存庫。如果要新增基本登錄,請定義 federatedRepository
元素中的 participatingBaseEntry 名稱欄位。對於基本登錄,其參與的基本項目是一個組織屬性,且會設為基本登錄的領域名稱。下列範例顯示兩個基本登錄的自訂聯合:
<federatedRepository>
<primaryRealm name="PrimaryRealm">
<participatingBaseEntry name="o=SampleBasicRealm1"/>
<participatingBaseEntry name="o=SampleBasicRealm2"/>
</primaryRealm>
</federatedRepository>
也可以將自訂登錄新增至自訂的聯合儲存庫。如果要新增自訂登錄,請定義 federatedRepository
元素中的 participatingBaseEntry 名稱欄位。對於自訂登錄,其參與的基本項目是一個組織屬性,且會設為自訂登錄的領域名稱。下列範例顯示自訂項目的聯合:
<federatedRepository>
<primaryRealm name="PrimaryRealm">
<participatingBaseEntry name="o=customRegistryRealm1"/>
</primaryRealm>
</federatedRepository>
如果要將某項 SAF 登錄,與已啟用 SAF 權限的一或多項非 SAF 登錄聯合,您必須配置分散式身分過濾器,以便將任何非 SAF 使用者對映至 SAF 使用者 ID。下列範例說明與 LDAP 登錄聯合的 SAF 登錄,且它啟用了分散式身分對映。federatedReposity 元素中指定了 primaryRealm 名稱, 因此,只要 RACMAP 設定檔是定義成將 LDAP 使用者對映至 SAF 使用者 ID,就必須指定 REGISTRY(NAME('FEDREALM')。
<server description="Federated SAF and LDAP">
<featureManager>
<feature>appSecurity-2.0</feature>
<feature>federatedRegistry-1.0</feature>
<feature>zosSecurity-1.0</feature>
<feature>ldapRegistry-3.0</feature>
</featureManager>
<federatedRepository>
<primaryRealm name="FEDREALM">
</primaryRealm>
</federatedRepository>
<!-- SAF user registry -->
<safRegistry id="saf" realm="SAFREALM" />
<safAuthorization id="saf" racRouteLog="ASIS" />
<safCredentials unauthenticatedUser="WSGUEST"
profilePrefix="BBGZDFLT"
mapDistributedIdentities="true" />
<safRoleMapper profilePattern="%profilePrefix%.%resource%.%role%"
toUpperCase="false" />
<ldapRegistry id="LDAP1" realm="LDAPREALM"
ldapType="IBM Tivoli Directory Server"
host="LDAP1HOST.ibm.com" port="389"
baseDN="o=ibm,c=us"
searchTimeout="8m"
ignoreCase="true"
bindDN="uid=ldapadm,cn=users,o=ibm,c=us"
bindPassword="ldapadmpw"
sslEnabled="false">
<idsFilters
userFilter="(&(uid=%v)(objectclass=inetOrgPerson))"
groupFilter="(&(cn=%v)(objectclass=groupOfUniqueNames))"
userIdMap="*:uid"
groupIdMap="*:cn"
groupMemberIdMap="groupOfUniqueNames:uniquemember">
</idsFilters>
</ldapRegistry>
</server>