2015-06-09 40 views
0

我有一臺運行自定義Realm的GlassFish 4.1服務器,通過數據庫進行身份驗證,如果失敗,則通過LDAP。此認證起作用。 我有2個應用程序相鄰運行。 SSO已啓用並正常工作。爲數據庫用戶啓用了默認的角色映射原則。每個應用程序都有自己的角色。從多個應用程序訪問角色

管理耳朵具有聲明AdminUsers的角色。數據庫中的用戶獲取數據庫中分配的組,因此不需要映射。 LDAP用戶在glassfish-web.xml中有映射:

<security-role-mapping> 
    <role-name>AdminUsers</role-name> 
    <group-name>Administrators</group-name> 
</security-role-mapping> 

用戶耳朵具有聲明用戶的角色。在數據庫用戶就可以通過數據庫分配的,就像主耳組,LDAP用戶有這種映射在GlassFish中-web.xml中:

<security-role-mapping> 
    <role-name>NormalUsers</role-name> 
    <group-name>Users</group-name> 
</security-role-mapping> 

在這兩個應用程序的每個頁面包含一個頂部菜單。 topmenu得到所有的團體,並根據顯示menubuttons。目前有2個按鈕:「UserProfile」和「查看用戶」。要訪問「UserProfile」,您需要角色「NormalUsers」,並且要訪問「查看用戶」,您需要角色「AdminUsers」。

當我用我的LDAP帳戶登錄時,我被分配角色「AdminUsers」和「NormalUsers」。但是,當我的瀏覽器位於管理耳朵內部的頁面上時,我只能看到「查看用戶」按鈕,並且當我的瀏覽器位於用戶耳朵的頁面上時,我只能看到「UserProfile」按鈕。所以我的應用程序不知道其他應用程序中的角色。

部署2個應用程序的原因是因爲我們要單獨更新每個應用程序,而無需重新部署/構建其他應用程序。

那麼有沒有一種方法可以訪問在同一虛擬服務器上部署的其他應用程序中聲明的角色?

回答

0

我現在用cookies處理它。這不是最好的解決方案,但它是一個解決方案。

相關問題