2

我们当前的应用程序使用 JSF/JPA 技术并部署在 Weblogic 12.1.2 上并执行以下操作:

  1. 通过 IDP 对用户进行身份验证
  2. IDP认证用户后发回用户所属的Groups
  3. 使用 Web.xml 和 WebLogic.xml 我们将组映射到角色

我们的 Application Scoped 角色非常精细,它可以帮助我们执行以下操作:

  1. 在 UI 上隐藏 UI 页面或组件
  2. 在方法上使用 RolesAllowed 注释

由于组到角色的映射在 Weblogic.xml 中,我们的应用程序用户无法将组更改为角色的映射,这是我必须解决的问题。

我的目标是做到以下几点:

  1. 通过我们的 IDP 对用户进行身份验证
  2. IDP 将向我们发送用户所属的组
  3. 在 web.xml 中定义角色
  4. 定义我们的应用程序将读取以查找组到角色映射的表
  5. 使用 Weblogic API 进行组到角色的映射
  6. 创建一个 UI 以允许我们的用户更改组到角色的映射

我遇到的问题是我找不到如何使用 WebLogic 动态地进行组到角色映射,因为我无法访问 WebLogic API,这将允许我在部署的应用程序中更改组到角色的映射。有没有人这样做过?

我已经研究过创建自定义角色映射器,但我不确定如何在我们部署的应用程序中获取此自定义角色映射器的句柄。

4

2 回答 2

0

从 Java EE 7 开始,基于Java EE 服务器上的此线程动态角色,这是不可能的

如果有人确实希望将此功能添加到 Java EE 8,请投票支持 Java EE 8 中的以下两个开放功能请求

https://java.net/jira/browse/JAVAEE_SECURITY_SPEC-8 https://java.net/jira/browse/JASPIC_SPEC-22

于 2016-02-10T17:11:42.697 回答
0

不是一个具体的答案,但可以使用 Weblogic 特定的解决方案来完成。

请参阅以下示例: https ://docs.oracle.com/cd/E13212_01/wles/docs42/dvspisec/examples.html

您必须实现 getRoles 方法:

import weblogic.security.spi.RoleMapper;
import weblogic.security.spi.RoleProvider;

public final class MyRoleMapperProviderImpl implements RoleProvider, RoleMapper 
{
   public Map getRoles(Subject subject, Resource resource,
      ContextHandler handler)
   {
      ...
   }
}

您也可以为其生成 MBean 以建立自动加载: https ://docs.oracle.com/middleware/1213/wls/DEVSP/generate_mbeantype.htm#DEVSP617

java -DMDF=xmlfile -Dfiles=filesdir -DcreateStubs=true
weblogic.management.commo.WebLogicMBeanMaker

结果可以作为 jar 添加到服务器类路径中,并且在服务器启动时可以使用该实现。

于 2017-09-28T08:50:40.800 回答