2014-03-27 22 views
1

我想用OpenAM + J2EE tomcat代理来保护Java servlet。我通过使用OpenAM的嵌入式OpenDJ获得了这部分工作。如何在OpenAM中配置LDAP验证模块实例

现在我想对一个LDAP服务器进行身份验证,所以我增加了一个LDAP模块实例OpenAM,但我得到“用户在该组织的任何资料”当我试图从一个用户的使用UID /密码LDAP存储。

我查看了OpenAM管理指南,对此的描述比较简短。我想知道是否可以在不使用为OpenAM配置的数据存储的情况下执行此操作?基于认证链和个人认证模块配置

  • 用户配置文件查找
    • 验证凭证通过配置LDAP认证:

    回答

    2

    在OpenAM登录过程由两个阶段的您负责验证部分的模块,但是由于您尚未配置用户数据存储(请参阅数据存储选项卡),因此配置文件查找失败。配置数据存储允许您在整个部署中公开更多的用户详细信息(例如,在SAML声明中包含用户属性或将它们映射到带有代理的HTTP标头),因此在大多数情况下都需要配置数据存储。

    如果您仍然不想配置数据存储,则可以通过访问控制 - > < realm> - >身份验证 - >所有核心设置 - >用户配置文件模式来防止用户配置文件查找失败并将其设置为忽略。

    +0

    工作就像一个魅力,谢谢你的帮助,彼得。 – user3466814

    +1

    关闭用户配置文件检查后,我可以通过OpenAM对LDAP服务器进行身份验证。 现在,接下来的问题是:如何在成功验证后验证用户的组成员身份?假设我对其进行身份验证的LDAP存储拥有100万用户,并且我只想授予属于具有我保护的资源的特定组的用户的权限,并且这些用户已经通过身份验证。 没有在OpenAM中配置数据存储,这种授权可能吗?如果是这样,怎么样? – user3466814

    0

    这与身份验证无关,但与授权有关......您必须配置适当的策略......请参阅OpenAM文档。

    代理将执行授权,OpenAM确定用户是否有权访问受保护的资源。

    +0

    感谢Bernhard的解释。我配置了J2EE策略并编辑了“主题”字段。我发现OpenAM实际上从我的LDAP目录中检索了组信息(OU = mygroup ...)。所以现在一切正常。 – user3466814

    0

    由于Bernhard指出认证只是授予用户访问权限的一部分。他指的是使用策略来控制访问。

    另一种方法是以编程方式检查经过身份验证的用户是否是所需组的成员。当您想要对OpenAM不知道的资源(例如特定数据)进行访问控制时,这会很有用。

    例如,假设您希望不同的组访问数据库中的表中的不同行。您可以检索与用户关联的组信息并将其添加到数据库查询中,从而限制返回的数据。

    我相信你可以用OpenAM来做到这一点,也可以使用自定义模块来允许策略使用数据库中的信息作为资源,但是我发现在这个细粒度的访问控制中执行起来要简单得多你的代码,并且很可能显着更快。