none
sharepoint 2010 表单认证问题 RRS feed

  • 问题

  • 我的环境是:

    除管理中心外,只有一个web应用程序,使用80端口创建了一个网站集,配置为基于声明的身份验证。

    用户帐号管理使用了一个AD(例如,mycompany.com)。

    对管理中心、STS Service、80端口网站配置文件修改如下:

     <Membership><add name="LdapMember"
       type="Microsoft.Office.Server.Security.LdapMembershipProvider, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
       server="mycompany.com"
       port="389"
       useSSL="false"
       userDNAttribute="distinguishedName"
       userNameAttribute="sAMAccountName"
       userContainer="CN=Users,DC=steve,DC=local"
       userObjectClass="person"
       userFilter="(ObjectClass=person)"
       scope="Subtree"
       otherRequiredUserAttributes="sn,givenname,cn" /></Membership>
        <Role> <add name="LdapRole"   
        type="Microsoft.Office.Server.Security.LdapRoleProvider, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
        server="mycompany.com"
        port="389"
        useSSL="false"
        groupContainer="CN=Users,DC=steve,DC=local"
        groupNameAttribute="cn"
        groupNameAlternateSearchAttribute="samAccountName"
        groupMemberAttribute="member"
        userNameAttribute="sAMAccountName"
        dnAttribute="distinguishedName"
        groupFilter="(ObjectClass=group)"
        userFilter="(ObjectClass=person)"
        scope="Subtree" />
    </Role>

    我的问题是:

    使用表单验证方式登录到网站后,人员的姓名显示的是英文,在检索用户时也无法使用显示名来检索。

    例如,域中某个帐号是tom,帐户显示名称是汤姆。我希望登录到网站后在页面右上方帐户显示处显示的是“汤姆”,另外,如果要将TOM加到某个组时,也能够通过输入“汤姆”来检索。

    是不是需要在上面的配置文件中再添加一些值(这个配置文件的修改模板是从网上搜来的,很多字段我不太清楚含义)?

    2011年2月17日 3:45

答案

  • 用了个变通的办法解决了这个问题。

    我们的网站是通过ISA发布出去的,我现在将sharepoint本身重新设置成了经典验证(没用声明验证),然后在ISA上发布sharepoint时使用了ISA的表单验证。
    这样本质上sharepoint仍然是通过ntlm验证,但给网站用户的体验却是表单验证了。
    无奈......

    • 已标记为答案 hellocgq 2011年2月22日 15:09
    2011年2月22日 15:08

全部回复

  • 用了个变通的办法解决了这个问题。

    我们的网站是通过ISA发布出去的,我现在将sharepoint本身重新设置成了经典验证(没用声明验证),然后在ISA上发布sharepoint时使用了ISA的表单验证。
    这样本质上sharepoint仍然是通过ntlm验证,但给网站用户的体验却是表单验证了。
    无奈......

    • 已标记为答案 hellocgq 2011年2月22日 15:09
    2011年2月22日 15:08
  • Hellocgq,您好,我也正在基于Sharepoint2010做基于AD的表单验证,现在无论怎么配置也通过也登陆不了,环境跟您说一下,请您帮忙看看。

    集团的域:home.langchao.com,

    MOSS服务器:PMDKMS.home.langchao.com,已经加入域。不是域控。

    使用普通的域账号登陆的MOSS服务器,比如home\test,没有域管理员权限,但是是MOSS的场管理员和网站集管理员。

    我在配置的时候,与您文中使用的配置是一样的。 但使用表单登陆的时候,总是提示用户名和密码不正确。 “The server could not sign you in. Make sure your user name and password are correct, and then try again

    到“事件查看器”,提示错误信息“尝试发布安全令牌时发生异常: The security token username and password could not be validated.。

     

    谢谢了

    2011年2月24日 3:37
  • 吴文杰,你好。

    我对sharepoint懂得也不多,所以经常遇到问题。你的情况我没有遇到过,也很难直接给予建议。我把我的配置过程提供给你参考:

    我的环境是:

    一台域控,windows 2008 r2域,建了个普通域用户moss,在域用户管理中给他委派了“复制目录修改”权限(同步user profile时需要此权限)

    一台前端服务器,windows 2008 r2,sharepoint 2010(未打补丁,不过打补丁也不影响,我之前为了解决表单验证帐号的配置文件显示问题把最新的补丁都打了,不过无效,对平台也没直接发现有什么影响)

    一台数据库服务器,sql server 2008 r2,也没特别打什么补丁

    我的sharepoint各服务的运行帐户都是用的刚才建的moss,它也是前端服务器的本地管理组成员,也是sql server的管理员组成员(安全问题对我不重要)。网站集管理员我也是用它。

    在网上查了很多文章,配置FBA基本上包括以下几个主要步骤:

    1、新建web程序并在新建时选择基于声明的验证(如果是已有web程序,并且是基于经典验证的,可按这里的方法转化成声明验证http://technet.microsoft.com/zh-cn/library/ee806890.aspx#section1),并在声明身份验证类型中将“启用 Windows 验证”和“启用基于窗体的身份验证(FBA)”都勾上,以后如果不需要winodws验证可以在配置全部完成后再来把它去掉,配置过程中需要它。

    2、修改管理中心网站、STS(SharePoint Web Services下面的SecurityTokenServiceAppliction),以及第1步中的web程序网站的配置文件

    3、登录管理中心网站,修改第1步创建的web程序的身份验证提供程序参数,改以下两项:

    将“ASP.NET 成员身份提供程序名称 ”的值设置为第2 步配置文件中指定的值,例如我的就是LdapMember

    将“ASP.NET 角色管理器名称 ”的值设置为第2 步配置文件中指定的值 ,例如我的是LdapRole

    4、登录管理中心网站,在web应用程序管理中为第1步创建的web程序指定用户策略,将网站集管理员添加到该程序的所有区域完全控制权限(在添加时,搜索用户时同一个用户名应该返回两个结果,一个是表单验证用户一个是域用户,可以把他们都加上)。

    5、在第1步创建的web程序上新建网站集(如果原来有网站就不用新建了),并指定网站集管理员是刚才添加用户策略的用户(添加域用户,不要添加表单用户)

    6、访问网站,先以windows验证方式登录,然后在网站设置中添加网站集管理员,将该用户的表单验证添加到网站集管理员。然后注销再用表单方式登录,再添加其他用户。结束。

    我参照以下两篇文章配置都能够成功配置基于AD的FBA(主要是看他们如何修改配置文件的):

    使用ldap provider

    http://blogs.technet.com/b/speschka/archive/2009/11/05/configuring-forms-based-authentication-in-sharepoint-2010.aspx

    在一开始配置的过程中,因为手工配置参数老是疏漏、出错,所以我下载了这个工具让它帮我自动配置,

    http://fbaconfigmanager.codeplex.com/

    在前端服务器上以管理员身份启动工具后,选择ldap模板并根据自己的实际环境修改一下模板中的域名和user container,填写好需要配置为FBA的网站地址,然后应用。等工具提示应用配置更改成功后再iisreset一下即可。

    使用Active Directory Membership Provider

    http://blogs.msdn.com/b/sridhara/archive/2010/01/07/setting-up-fba-claims-in-sharepoint-2010-with-active-directory-membership-provider.aspx?PageIndex=2

    希望我的配置过程对你解决问题有帮助!

     最后我个人建议在微软有补丁出来改善表单验证功能前别用表单验证了。如果为了用户体验需要,可以考虑我上面的变通方法,大不了你自定义ISA的表单验证登录页面也行啊。在sharepoint 2010 中启用表单验证感觉非常不爽,用户配置文件想尽办法都无法同步(查了N多网页文章,据说sharepoint不支持表单验证用户的配置文件同步,要手工用LDIF文件通过POWER SHELL来导入),用户登录进去后,有的帐户名显示时前面加一串乱码“i:w”这样的,无法以中文显示。搜索用户时也只能用登录帐号来搜索,不能用display name搜索。

     

     

    2011年2月24日 6:57
  • 吴文杰,你好。

    我对sharepoint懂得也不多,所以经常遇到问题。你的情况我没有遇到过,也很难直接给予建议。我把我的配置过程提供给你参考:

    我的环境是:

    一台域控,windows 2008 r2域,建了个普通域用户moss,在域用户管理中给他委派了“复制目录修改”权限(同步user profile时需要此权限)

    一台前端服务器,windows 2008 r2,sharepoint 2010(未打补丁,不过打补丁也不影响,我之前为了解决表单验证帐号的配置文件显示问题把最新的补丁都打了,不过无效,对平台也没直接发现有什么影响)

    一台数据库服务器,sql server 2008 r2,也没特别打什么补丁

    我的sharepoint各服务的运行帐户都是用的刚才建的moss,它也是前端服务器的本地管理组成员,也是sql server的管理员组成员(安全问题对我不重要)。网站集管理员我也是用它。

    在网上查了很多文章,配置FBA基本上包括以下几个主要步骤:

    1、新建web程序并在新建时选择基于声明的验证(如果是已有web程序,并且是基于经典验证的,可按这里的方法转化成声明验证http://technet.microsoft.com/zh-cn/library/ee806890.aspx#section1),并在声明身份验证类型中将“启用 Windows 验证”和“启用基于窗体的身份验证(FBA)”都勾上,以后如果不需要winodws验证可以在配置全部完成后再来把它去掉,配置过程中需要它。

    2、修改管理中心网站、STS(SharePoint Web Services下面的SecurityTokenServiceAppliction),以及第1步中的web程序网站的配置文件

    3、登录管理中心网站,修改第1步创建的web程序的身份验证提供程序参数,改以下两项:

    将“ASP.NET 成员身份提供程序名称 ”的值设置为第2 步配置文件中指定的值,例如我的就是LdapMember

    将“ASP.NET 角色管理器名称 ”的值设置为第2 步配置文件中指定的值 ,例如我的是LdapRole

    4、登录管理中心网站,在web应用程序管理中为第1步创建的web程序指定用户策略,将网站集管理员添加到该程序的所有区域完全控制权限(在添加时,搜索用户时同一个用户名应该返回两个结果,一个是表单验证用户一个是域用户,可以把他们都加上)。

    5、在第1步创建的web程序上新建网站集(如果原来有网站就不用新建了),并指定网站集管理员是刚才添加用户策略的用户(添加域用户,不要添加表单用户)

    6、访问网站,先以windows验证方式登录,然后在网站设置中添加网站集管理员,将该用户的表单验证添加到网站集管理员。然后注销再用表单方式登录,再添加其他用户。结束。

    我参照以下两篇文章配置都能够成功配置基于AD的FBA(主要是看他们如何修改配置文件的):

    使用ldap provider

    http://blogs.technet.com/b/speschka/archive/2009/11/05/configuring-forms-based-authentication-in-sharepoint-2010.aspx

    在一开始配置的过程中,因为手工配置参数老是疏漏、出错,所以我下载了这个工具让它帮我自动配置,

    http://fbaconfigmanager.codeplex.com/

    在前端服务器上以管理员身份启动工具后,选择ldap模板并根据自己的实际环境修改一下模板中的域名和user container,填写好需要配置为FBA的网站地址,然后应用。等工具提示应用配置更改成功后再iisreset一下即可。

    使用Active Directory Membership Provider

    http://blogs.msdn.com/b/sridhara/archive/2010/01/07/setting-up-fba-claims-in-sharepoint-2010-with-active-directory-membership-provider.aspx?PageIndex=2

    希望我的配置过程对你解决问题有帮助!

     最后我个人建议在微软有补丁出来改善表单验证功能前别用表单验证了。如果为了用户体验需要,可以考虑我上面的变通方法,大不了你自定义ISA的表单验证登录页面也行啊。在sharepoint 2010 中启用表单验证感觉非常不爽,用户配置文件想尽办法都无法同步(查了N多网页文章,据说sharepoint不支持表单验证用户的配置文件同步,要手工用LDIF文件通过POWER SHELL来导入),用户登录进去后,有的帐户名显示时前面加一串乱码“i:w”这样的,无法以中文显示。搜索用户时也只能用登录帐号来搜索,不能用display name搜索。

     

     

     

     

    感谢您的回复,非常详细和认真,受益匪浅。

    为了解决这个问题,我已经查阅资料和尝试了不下20多次,一直没有解决,现在基本卡在您文章中第四步:

    4、登录管理中心网站,在web应用程序管理中为第1步创建的web程序指定用户策略,将网站集管理员添加到该程序的所有区域完全控制权限(在添加时,搜索用户时同一个用户名应该返回两个结果,一个是表单验证用户一个是域用户,可以把他们都加上)。

    在这个地方,我只有搜索出一个用户,就是域用户,表单验证用户搜索不出来。

    这个地方,您有什么经验分享给我吗?

    如果可以,我们可以通过MSN(awenjie@gmail.com)来交流,我会将实际解决的经验分享到这里来。

    再次感谢。

     

     

    2011年2月24日 7:50
  • 这个情况看上去应该是配置文件没有修改正确,正确的话应该是可以同时搜到域用户和表单用户的。

    一共是要修改三个配置文件:管理中心网站、STS网站、以及你要配置表单验证访问的网站的web.config.

    建议使用我上面说的那个开源工具来修改,比较方便省事,而且不容易出错。

    2011年2月25日 14:53
  • 这个情况看上去应该是配置文件没有修改正确,正确的话应该是可以同时搜到域用户和表单用户的。

    一共是要修改三个配置文件:管理中心网站、STS网站、以及你要配置表单验证访问的网站的web.config.

    建议使用我上面说的那个开源工具来修改,比较方便省事,而且不容易出错。

     

    谢谢Hellocgq,我明早到公司再试一下。

    2011年2月25日 15:13
  • 用了个变通的办法解决了这个问题。

    我们的网站是通过ISA发布出去的,我现在将sharepoint本身重新设置成了经典验证(没用声明验证),然后在ISA上发布sharepoint时使用了ISA的表单验证。
    这样本质上sharepoint仍然是通过ntlm验证,但给网站用户的体验却是表单验证了。
    无奈......


    2013年1月10日 5:27