【问题标题】:WSO2 Identity Server - LDAP user store not workingWSO2 身份服务器 - LDAP 用户存储不起作用
【发布时间】:2013-08-01 02:58:06
【问题描述】:

我正在尝试针对我们的公司 Active Directory 配置 Identity Server (4.1.0)。

我正在使用 ReadOnlyLDAPUserStoreManager 类。这是用户存储的配置:

<UserStoreManager class="org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager">
            <Property name="ReadOnly">true</Property>
            <Property name="MaxUserNameListLength">100</Property>
            <Property name="ConnectionURL">ldap://host</Property>
            <Property name="ConnectionName">ommitted</Property>
            <Property name="ConnectionPassword">xxxxxx</Property>
            <Property name="passwordHashMethod">PLAIN_TEXT</Property>
            <Property name="UserSearchBase">searchbase</Property>
            <Property name="UserNameListFilter">(objectClass=user)</Property>
            <Property name="UserNameAttribute">sAMAccountName</Property>
            <Property name="ReadLDAPGroups">true</Property>
            <Property name="GroupSearchBase">groupbase</Property>
            <Property name="GroupNameListFilter">(objectClass=group)</Property>
            <Property name="GroupNameAttribute">sAMAccountName</Property>
            <Property name="MembershipAttribute">memberOf</Property>
            <Property name="UserRolesCacheEnabled">false</Property>
            <Property name="ReplaceEscapeCharactersAtUserLogin">true</Property>
            <Property name="maxFailedLoginAttempt">0</Property> 
        </UserStoreManager>

我删除了特定的连接详细信息以及 UserSearchBase 和 GroupSearchBase。 IS 启动成功,我可以看到列出的用户和角色。

我遇到了以下问题:

  • 身份服务器未将分配的角色正确映射到用户。即使我的 AD 使用“memberOf”属性来定义组成员身份,身份服务器也没有分配给特定用户
  • 我无法使用 LDAP 存储中的用户登录身份服务器管理 UI。当我通过以下方式配置领域/配置时:

    行政 AD_user_name 行政 每个人 jdbc/WSO2CarbonDB org.wso2.carbon.user.core.config.multitenancy.CommonLDAPRealmConfigBuilder org.wso2.carbon.user.core.config.multitenancy.CommonLDAPRealmConfigBuilder

是否有人对与作为活动目录的只读 LDAP 存储集成有任何建议?

更新 使用 WSO2 支持,我建议大家等到 IS 4.1.1 再尝试这个特定的用例。旧版本的产品根本不能很好地工作。我会更新,因为我知道更多。

【问题讨论】:

  • 我也有同样的问题。你有运气吗?
  • 这里有同样的问题。试图让 WSO2 IS 使用 AD 作为后端,似乎没有一个配置组合适用于只读访问。如果您能在这方面取得任何进展,请更新。

标签: active-directory wso2


【解决方案1】:

我不了解 Active Directory,但我们在 OpenLDAP 上遇到了类似的问题,我们无法列出用户的角色,原因是,我们的 LDAP 仅通过使用其 UID 将用户与组相关联,例如,在角色上的属性 memberUid 是:

memberUid = alandaniel

但是WSO2 org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager 的方式 期望是:

memberUid = uid=alandaniel,ou=x,dc=y,dc=z

所以我不得不自定义 user.core 插件。 而不是创建查询:

(&(objectClass=posixGroup)(memberUid=uid=alandaniel,ou=x,dc=y,dc=z))

它现在将使用

(&(objectClass=posixGroup)(memberUid=alandaniel))

所以如果真的需要自定义,扩展ReadOnlyLDAPUserStoreManager,自定义getExternalRoleListOfUser(..)方法

*使用的版本是 WSO2 IS 4.1.0 和 WSO2 ESB 4.6.0。

【讨论】:

  • 这仍然是 WSO2 IS 5.0.0 的问题吗?
【解决方案2】:

我在最近的一次客户互动中使用了附加配置 你可以试试这个,连接一个对 AD 有读取权限的用户吗?

此外,最新版本的 IS 现在支持多个用户商店。如果您想要一个活动商店,请务必评论默认商店。否则,您需要为每个用户存储添加一个域名(此处为 ad-domain)。

此处描述了用户存储设置: http://docs.wso2.org/wiki/display/IS400/Configuring+User+Stores

希望这会有所帮助, 伊莎贝尔。

<UserStoreManager class="org.wso2.carbon.user.core.ldap.ActiveDirectoryUserStoreManager">
<Property name="DomainName">ad-domain</Property>
<Property name="defaultRealmName">My-Realm</Property>
<Property name="kdcEnabled">false</Property>
<Property name="ConnectionURL">ldap://myserver:389</Property>
<Property name="ConnectionName">CN=yyyy,ou=xxxxx</Property>
<Property name="ConnectionPassword">xxxxxxx</Property>
<Property name="passwordHashMethod">PLAIN_TEXT</Property>
<Property name="UserSearchBase">ou=xxxx,...</Property>
<Property name="UserEntryObjectClass">user</Property>
<Property name="UserNameAttribute">sAMAccountName</Property>
<Property name="isADLDSRole">false</Property>
<Property name="userAccountControl">512</Property>
<Property name="UserNameListFilter">(objectClass=user)</Property>
<Property name="UserNameSearchFilter">(&amp;(objectClass=user)(cn=?))</Property>
<Property name="UsernameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
<Property name="UsernameJavaScriptRegEx">^[\\S]{3,30}$</Property>
<Property name="PasswordJavaScriptRegEx">^[\\S]{5,30}$</Property>
<Property name="RolenameJavaScriptRegEx">^[\\S]{3,30}$</Property>
<Property name="RolenameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
<Property name="ReadLDAPGroups">true</Property>
<Property name="WriteLDAPGroups">false</Property>
<Property name="EmptyRolesAllowed">true</Property>
<Property name="GroupSearchBase">ou=xxxxx</Property>
<Property name="GroupEntryObjectClass">group</Property>
<Property name="GroupNameAttribute">cn</Property>
<Property name="MembershipAttribute">member</Property>
<Property name="GroupNameListFilter">(objectcategory=group)</Property>
<Property name="GroupNameSearchFilter">(&amp;(objectClass=group)(cn=?))</Property>
<Property name="UserRolesCacheEnabled">true</Property>
<Property name="Referral">follow</Property>
<Property name="BackLinksEnabled">true</Property>
<Property name="maxFailedLoginAttempt">0</Property>
</UserStoreManager>

【讨论】:

  • 看起来此设置用于读/写用户存储 - Identity Server 可以在其中添加/编辑用户和角色,对吧?我特别需要的是一个只读存储...
  • 欣赏响应,但得到相同的结果。我也在使用最新版本的 IS - 4.1.0
【解决方案3】:

请参考以下 Suresh 的博文。

http://sureshatt.blogspot.com/2012/07/how-to-connect-wso2-api-manager-to.html

它有一个使用ReadOnlyLDAPUserStoreManager的例子。

希望对你有帮助。

谢谢。

【讨论】:

  • 是的,我已经完成了那篇博文。不幸的是,我无法让它工作。
  • 欣赏该博客的链接 - 以前从未见过。不幸的是,我得到了相同的结果。
【解决方案4】:

更新:

我可以确认 WSO2 IS 4.1.1 解决了该问题,并且按预期工作。我得出结论,产品 4.1.0 完全不起作用。

开发团队已经修复了这些功能中的问题,并且在最新版本中。

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多