我有一台运行自定义Realm的Glassfish 4.1服务器通过数据库进行身份验证,如果失败,则通过LDAP进行身份验证。此身份验证有效。 我有2个应用程序彼此相邻运行。 SSO已启用并可正常运行。为数据库用户启用了角色映射的默认原则。每个应用程序都有自己的角色。
administration-ear具有声明为AdminUsers的角色。数据库中的用户获取在数据库中分配的组,因此不需要映射。 LDAP用户在glassfish-web.xml中有映射:
<security-role-mapping>
<role-name>AdminUsers</role-name>
<group-name>Administrators</group-name>
</security-role-mapping>
users-ear具有声明用户的角色。数据库中的用户获得通过数据库分配的组,就像main-ear一样,LDAP用户在glassfish-web.xml中有这个映射:
<security-role-mapping>
<role-name>NormalUsers</role-name>
<group-name>Users</group-name>
</security-role-mapping>
两个应用程序中的每个页面都包含一个topmenu。 topmenu获得所有组,并根据显示menubuttons。目前有2个按钮:&#34; UserProfile&#34;和&#34;查看用户&#34;。访问&#34; UserProfile&#34;你需要角色&#34; NormalUsers&#34;,以及访问&#34;查看用户&#34;你需要角色&#34; AdminUsers&#34;。
当我使用我的LDAP帐户登录时,我已分配角色&#34; AdminUsers&#34;和#34; NormalUsers&#34;。但是,当我的浏览器位于管理部门内部的页面上时,我只看到&#34;查看用户&#34;按钮,当我的浏览器在用户耳中的页面上时,我只看到&#34; UserProfile&#34;按钮。所以我的应用程序不知道另一个应用程序中的角色。
部署了2个应用程序的原因是因为我们希望单独更新每个应用程序,而无需重新部署/构建其他应用程序。
那么有没有办法可以访问在同一虚拟服务器上部署的其他应用程序中声明的角色?
答案 0 :(得分:0)
我现在用饼干处理它。这不是最好的解决方案,但它是一种解决方案。