SharePoint 2010 中表单认证时多出了和 SecurityTokenServiceApplication 交互的动作,所以配置表单认证时需要在 SecurityTokenServiceApplication 下的 Web.config 中配置相应的 MembershipProvider, 位置:C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\WebServices\SecurityToken\web.config
在配置表单认证时可能会遇到各种问题,为了方便查找问题,可以临时修改 web.config ,让错误的详细信息显示到浏览器中,具体步骤如下:
找到访问的 SharePoint Web Application 对应的目录中的 Web.Config,查找<SafeMode MaxControls="200" CallStack= ,默认情况下 CallStack="False",将其修改为 CallStack="True";
打开 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\WebServices\SecurityToken\web.config 文件,查找 </behavior> ,在此节点前加入 <serviceDebug includeExceptionDetailInFaults="true"/>;
OK,现在就可以看到出错的详细信息。
另外,SharePoint Server 2010 中增加了 LdapMembershipProvider 和 LdapRoleProvider,在 Microsoft.Office.Server.UserProfiles, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c 程序集中,我们可以将 AD LDS 作为 SharePoint 的用户中心,MembershipProvider和RoleProvider的配置示例如下:
<membership>
<providers>
<add name="Nanmu"
type="Microsoft.Office.Server.Security.LdapMembershipProvider, Microsoft.Office.Server.UserProfiles, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
server="localhost"
port="389"
useSSL="false"
userDNAttribute="distinguishedName"
userNameAttribute="sAMAccountName"
userContainer="CN=Users,OU=VIP,DC=nanmu,DC=cn"
userObjectClass="person"
userFilter="(ObjectClass=person)"
scope="Subtree"
otherRequiredUserAttributes="sn,givenname,cn" />
</providers>
</membership>
<roleManager enabled="true">
<providers>
<add name="Nanmu"
type="Microsoft.Office.Server.Security.LdapRoleProvider, Microsoft.Office.Server.UserProfiles, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
server="localhost"
port="389"
useSSL="false"
groupContainer="CN=Groups,OU=VIP,DC=nanmu,DC=cn"
groupNameAttribute="cn"
groupNameAlternateSearchAttribute="samAccountName"
groupMemberAttribute="member"
userNameAttribute="sAMAccountName"
dnAttribute="distinguishedName"
groupFilter="(ObjectClass=group)"
userFilter="(ObjectClass=person)"
scope="Subtree" />
</providers>
</roleManager>