Jakarta ee 如何将WAS8联邦repo LDAP组绑定到应用程序?

Jakarta ee 如何将WAS8联邦repo LDAP组绑定到应用程序?,jakarta-ee,websphere,java-ee-6,ear,websphere-8,Jakarta Ee,Websphere,Java Ee 6,Ear,Websphere 8,我正在WASV8.0.0.5中使用联邦存储库。该联邦repo包含一个JDBC repo、3个activedirectorydap repo和一个基于文件的repo。repo被设置为领域和域,由javaee6企业应用程序使用。我正在实现JavaEE6安全性,特别是ServletSpec3.0身份验证 在应用程序中,我能够登录并验证所有repo的用户,但是我无法获得除JDBC repo之外的所有repo的用户角色。具体来说,我指的是使用Servelet Spec 3.0的request.isUser

我正在WASV8.0.0.5中使用联邦存储库。该联邦repo包含一个JDBC repo、3个activedirectorydap repo和一个基于文件的repo。repo被设置为领域和域,由javaee6企业应用程序使用。我正在实现JavaEE6安全性,特别是ServletSpec3.0身份验证

在应用程序中,我能够登录并验证所有repo的用户,但是我无法获得除JDBC repo之外的所有repo的用户角色。具体来说,我指的是使用Servelet Spec 3.0的request.isUserInRole()。正确的组和用户出现在WAS的管理控制台(VMM)中。我通过.ear项目的ibm-application-bnd.xml将组映射到应用程序角色。我已经检查了映射的拼写/空格。一切都是正确的。我也检查了.war项目的web.xml是否有任何打字错误。一切看起来都很好。由于JDBCrepo可以正常工作,因此我将其.ear和.war角色到组的映射与LDAP映射进行了比较

我发现,如果我将特定用户映射到LDAP repos的ibm-application-bnd.xml中的组,那么就可以确认用户的角色。这表明我的Active Directory用户和组之间的映射配置有问题

就配置而言,我将讨论其中一个LDAP回购:
我在LDAP实体类型中将组定义为映射到对象类组;名称组;groupOfUniqueNames(我认为只需要一个团队,但我一直在尝试解决这个问题)。
PersonAccount已映射到对象类用户。
出于绝望,我还创建了一个名为memberOf的受支持LDAP属性,并将其映射到PersonAccount实体类型。
至于组属性定义,我已经将“组成员资格属性的名称”设置为“memberof”,并指定了“Direct”的范围。我还尝试了“memberOf”,它没有改变任何东西

使用ApacheDirectoryStudio浏览Active Directory,我可以确认user和group是我正在寻找的两个对象类


谁能帮我解释一下我的配置有什么问题吗?

我花了一段时间,但我终于找到了答案

我需要在ibm-application-bnd.xml中的group标记中声明一个访问id属性

在WAS管理控制台中,单击安全-->安全域-->您的域-->扩展用户域(应选择此域的自定义)-->并单击管理用户,您将看到所有组的列表,无论这些组是由JDBC自定义用户注册表、LDAP repo还是平面文件repo生成的

您希望为LDAP repo使用唯一名称字段。复制该名称,然后将其粘贴到ibm-application-bnd.xml中,如下所示:

<security-role name="ADMIN">
    <group name="SomeArbitraryGroupName" access-id="group:yourRealm/CN=SomeArbitraryGroupName,OU=Groups,OU=SomeDivision,OU=SomeLocatoin,o=distinguishedNameOfABaseEntry"/>
</security-role>


如果有更好的方法来完成这项任务,那就太好了。否则,我希望这篇文章能帮助其他人清理IBM关于这个主题的模糊、缺失或分散的文档。

我花了一段时间,但我终于找到了答案

我需要在ibm-application-bnd.xml中的group标记中声明一个访问id属性

在WAS管理控制台中,单击安全-->安全域-->您的域-->扩展用户域(应选择此域的自定义)-->并单击管理用户,您将看到所有组的列表,无论这些组是由JDBC自定义用户注册表、LDAP repo还是平面文件repo生成的

您希望为LDAP repo使用唯一名称字段。复制该名称,然后将其粘贴到ibm-application-bnd.xml中,如下所示:

<security-role name="ADMIN">
    <group name="SomeArbitraryGroupName" access-id="group:yourRealm/CN=SomeArbitraryGroupName,OU=Groups,OU=SomeDivision,OU=SomeLocatoin,o=distinguishedNameOfABaseEntry"/>
</security-role>

如果有更好的方法来完成这项任务,那就太好了。否则,我希望这篇文章能帮助其他人清理IBM关于这个主题的模糊、缺失或分散的文档