0

我一直在设置WSO2 IS 5.0.0我为我的Windows Server 2012 活动目录(即我们的 PDC)创建了一个外部读/写 ldap 二级用户存储。我们还有一个运行 Active Directory的Windows Server 2003服务器。我们最近进行了更新,并将 2003 服务器上的用户和组复制到 2012 服务器。

我注意到 WSO2 的问题是,过去在 2003 AD 服务器中创建的任何用户帐户在登录 wso2 carbon 站点(https://ip address:9443/carbon)时都无法更改密码. 当他们尝试更改密码时,会收到此错误:“无法访问目录服务”。但是,在公元 2012 年创建的帐户(以特定方式 - 请参阅下文以了解说明)能够成功登录并更改其密码。

附加信息- 在我们的 AD 服务器中,用户显示姓氏、名字(包括逗号)。每个 AD 服务器中的个人用户名都是相同的 - 第一个首字母 + 姓氏。

如果我在 2012 年创建了一个用户,并且名称显示为Firstname Lastname(无逗号),使用典型的用户名 - 第一个首字母 + 姓氏,则用户能够登录 WSO2 Carbon 站点并毫无问题地更改他的密码。任何显示名称姓氏、名字的用户都可以登录,但不能更改密码。

有没有人遇到过这个问题?用户存储或 AD 中是否缺少特定设置?

4

2 回答 2

0

使用包含 Active Directory 用户帐户的外部用户存储时,您主要需要关注两件事:

  • 确保在您的 user-mgt.xml 文件中指定以“ActiveDirectoryUserStoreManager”结尾的用户存储类 - 而不是“ReadWriteLDAPUserStoreManager”

  • 建议将 UserNameAttribute 属性的默认值设置为“uid”或“cn”。但是,在 Active Directory 中没有“uid”属性。有一个“cn”属性,用户名将填充此属性作为名字、空格和最后一个的组合。(这听起来像你所看到的)。这也可以包含姓氏、逗号和名字,具体取决于 Active Directory 用户和计算机实用程序中的设置。

您希望 Identity Server 执行 LDAP 搜索,而不考虑使用用户的用户 ID(因为无论 cn 属性的格式如何,这都不会改变)。

在 Active Directory 条目中,包含用户 ID 值的属性称为“sAMAccountName”。因此,您要用于 Active Directory 用户存储的 UserNameAttribute 属性的值是属性“sAMAccountName”。

注意:您还需要在 UserNameSearchFilter 属性中使用此值:

<Property name="UserNameAttribute">sAMAccountName</Property>
<Property name="UserNameSearchFilter">(&amp;(objectClass=user)(sAMAccountName=?))</Property>
于 2015-04-29T21:15:43.563 回答
-1

必须启用 LDAPS 以允许用户更改其密码。

于 2015-03-15T09:15:47.393 回答