在 SharePoint 2013 中从经典模式身份验证迁移到基于声明的身份验证
适用于:2013 2016 2019 Subscription Edition SharePoint in Microsoft 365
基于声明的身份验证是启用 SharePoint 2013 的高级功能的必要组件。 若要将经典模式 Web 应用程序从 SharePoint 2010 产品移至 SharePoint 2013,您可以先在 SharePoint 2010 产品中将这些应用程序转换为基于声明的 Web 应用程序,然后将其迁移到 SharePoint 2013。 本文中的过程阐释了各种受支持的方案。
SharePoint 2013 中的 PowerShell Convert-SPWebApplication cmdlet 将经典模式 Web 应用程序转换为基于声明的 Web 应用程序。
警告
将 Web 应用程序转换为基于声明的身份验证后,无法将其还原为经典模式身份验证。
在 SharePoint 2010 产品 中将 SharePoint 2010 产品 经典模式 Web 应用程序转换为基于声明的身份验证,再升级到 SharePoint 2013
在 SharePoint 2010 产品中,完成以下过程可将现有 Web 应用程序转换为基于声明的身份验证。 在将 Web 应用程序转换为基于声明的身份验证后,完成附加步骤以将 Web 应用程序迁移到 SharePoint 2013。 若要完成此过程,您需要以下信息:
要转换的 Web 应用程序的 URL: http://yourWebAppUrl
要设置为站点管理员的用户帐户: yourDomain\yourUser
将 SharePoint 2010 产品 Web 应用程序转换为使用基于声明的身份验证的基本步骤
- 确认您具有以下成员身份:
SQL Server 实例上的 securityadmin 固定服务器角色。
要更新的所有数据库上的 db_owner 固定数据库角色。
运行 PowerShell cmdlet 的服务器上的 Administrators 组。
必须阅读 about_Execution_Policies (https://go.microsoft.com/fwlink/p/?LinkId=193050) 。
添加至少具有以上最小权限的成员。
管理员可使用 Add-SPShellAdmin cmdlet 来授予使用 SharePoint 2013 cmdlet 的权限。
注意
[!注意] 如果您不具有这些权限,请联系您的安装管理员或 SQL Server 管理员来请求权限。 有关 PowerShell 权限的其他信息,请参阅"权限"和 Add-SPShellAdmin。
- 在 PowerShell 命令提示符处,键入以下内容以将指定用户帐户设置为网站的管理员:
$WebAppName = "http://<yourWebAppUrl>"
$wa = get-SPWebApplication $WebAppName
$wa.UseClaimsAuthentication = $true
$wa.Update()
其中:
- <yourWebAppUrl> 是 Web 应用程序的 URL。
- 在 PowerShell 命令提示符处,键入以下内容以将策略配置为使用户具有完全访问权限:
$account = "yourDomain\yourUser"
$account = (New-SPClaimsPrincipal -identity $account -identitytype 1).ToEncodedString()
$wa = get-SPWebApplication $WebAppName
$zp = $wa.ZonePolicies("Default")
$p = $zp.Add($account,"PSPolicy")
$fc=$wa.PolicyRoles.GetSpecialRole("FullControl")
$p.PolicyRoleBindings.Add($fc)
$wa.Update()
有关详细信息,请参阅Get-SPWebApplication。
- 在 PowerShell 命令提示符处,键入以下内容以执行用户迁移:
$wa.MigrateUsers($true)
- 在用户迁移完成之后,从 PowerShell 命令提示符处键入以下内容来进行设置:
$wa.ProvisionGlobally()
有关详细信息,请参阅New-SPClaimsPrincipal。
完成上述过程后,可能会遇到以下一个或多个问题:在访问迁移的 Web 应用程序时提交有效凭据的用户可能会收到通知,指出他们没有权限。 如果遇到这种情况,则 Web 应用程序的 portalsuperuseraccount 属性和 portalsuperreaderaccount 属性可能在迁移前已配置。 在这种情况下,请更新 portalsuperuseraccount 属性和 portalsuperreaderaccount 属性以使用新的基于声明的帐户名。 迁移后,可以在已迁移 Web 应用程序的 Web 应用程序策略中找到新的基于声明的帐户名称。如果在迁移后未调用现有警报,则可能需要删除并重新创建警报。如果迁移后搜索爬网在 Web 应用程序上不起作用,请确保搜索爬网帐户列出转换后的新帐户名称。 如果未列出新的转换后帐户名,则必须手动为爬网帐户创建新策略。
将基于声明的 SharePoint 2010 产品 Web 应用程序迁移到 SharePoint 2013 的具体步骤
在 SharePoint 2013 中,创建基于声明的 Web 应用程序。 有关详细信息,请参阅在 SharePoint 服务器中创建基于声明的 web 应用程序。
将两个现有的 SharePoint 2010 产品内容数据库附加到新创建的 SharePoint 2013 基于声明的 Web 应用程序。 有关详细信息,请参阅在 SharePoint Server 中附加或分离内容数据库。
注意
将 SharePoint 2010 产品内容数据库附加到基于 SharePoint 2013 声明的 Web 应用程序时,数据库将升级到 SharePoint 2013 数据库格式,但不会启用声明。
将 SharePoint 2010 产品 经典模式 Web 应用程序转换为 SharePoint 2013 基于声明的 Web 应用程序
在 SharePoint 2013 中,完成以下过程可将现有的 SharePoint 2010 产品经典模式 Web 应用程序转换为使用基于声明的身份验证的 SharePoint 2013 Web 应用程序。
将 SharePoint 2010 产品 经典模式 Web 应用程序转换为使用 SharePoint 2013 基于声明的身份验证的具体步骤
- 确认您具有以下成员身份:
SQL Server 实例上的 securityadmin 固定服务器角色。
要更新的所有数据库上的 db_owner 固定数据库角色。
运行 PowerShell cmdlet 的服务器上的 Administrators 组。
必须阅读 about_Execution_Policies (https://go.microsoft.com/fwlink/p/?LinkId=193050) 。
添加至少具有以上最小权限的成员。
管理员可使用 Add-SPShellAdmin cmdlet 来授予使用 SharePoint 2013 cmdlet 的权限。
注意
[!注意] 如果您不具有这些权限,请联系您的安装管理员或 SQL Server 管理员来请求权限。 有关 PowerShell 权限的其他信息,请参阅"权限"和 Add-SPShellAdmin。
在 SharePoint 2013 环境中,在“开始”菜单上,单击“所有程序”。
单击“SharePoint 2013”。
单击“SharePoint 2013 命令行管理程序”。
转到保存该文件的目录。
在 PowerShell 命令提示符处,键入以下命令:
$ap = New-SPAuthenticationProvider -UseWindowsIntegratedAuthentication -DisableKerberos
New-SPWebApplication -name "ClaimsWebApp" -Port 80 -ApplicationPool "ClaimsAuthAppPool" -ApplicationPoolAccount (Get-SPManagedAccount "<domainname>\<user>") -AuthenticationMethod NTLM -AuthenticationProvider $ap
其中:
- <domainname>\ <user> 是服务器所属的域和用户帐户的名称。
将两个现有的 SharePoint 2010 产品内容数据库附加到新的 SharePoint 2013 声明模式 Web 应用程序。 有关详细信息,请参阅在 SharePoint Server 中附加或分离内容数据库。
注意
将 SharePoint 2010 产品内容数据库附加到 SharePoint 2013 声明模式 Web 应用程序时,数据库将升级到 SharePoint 2013 数据库格式。 您必须确认内容数据库在附加之后可正常运行。
在 PowerShell 命令提示符下,键入以下内容:
Convert-SPWebApplication -Identity <yourWebAppUrl> -From Legacy -To Claims -RetainPermissions [-Force]
其中:
- <yourWebAppUrl> 是 Web 应用程序的 URL。
注意
Convert-SPWebApplication 将内容数据库转换为基于声明的身份验证。 转换内容数据库后,必须验证用户是否可以访问 Web 应用程序。
如有必要,请将第三个 SharePoint 2010 产品内容数据库附加到新的 SharePoint 2013 声明模式 Web 应用程序,并验证内容数据库在附加后是否正常工作。
在 PowerShell 命令提示符下,键入以下内容:
Convert-SPWebApplication -Identity <yourWebAppUrl> -From Legacy -To Claims -RetainPermissions [-Force]
验证将内容数据库转换为基于声明的身份验证后,用户是否可以访问 Web 应用程序。 有关详细信息,请参阅 New-SPWebApplication、Get-SPManagedAccount 和 Convert-SPWebApplication。
将 SharePoint 2013 经典模式 Web 应用程序转换为基于声明的 Web 应用程序
在 SharePoint 2013 中,完成以下过程可先创建经典模式 Web 应用程序,然后将其转换为基于声明的身份验证。
在 SharePoint 2013 中创建经典模式 Web 应用程序的具体步骤
确认您具有以下成员身份:
SQL Server 实例上的 securityadmin 固定服务器角色。
要更新的所有数据库上的 db_owner 固定数据库角色。
运行 PowerShell cmdlet 的服务器上的 Administrators 组。
必须阅读 about_Execution_Policies (https://go.microsoft.com/fwlink/p/?LinkId=193050) 。
添加至少具有以上最小权限的成员。
管理员可使用 Add-SPShellAdmin cmdlet 来授予使用 SharePoint 2013 cmdlet 的权限。
注意
[!注意] 如果您不具有这些权限,请联系您的安装管理员或 SQL Server 管理员来请求权限。 有关 PowerShell 权限的其他信息,请参阅"权限"和 Add-SPShellAdmin。
在 PowerShell 命令提示符下,键入以下内容:
New-SPWebApplication -Name <Name> -ApplicationPool <ApplicationPool> -AuthenticationMethod <WindowsAuthType> -ApplicationPoolAccount <ApplicationPoolAccount> -Port <Port> -URL <URL>
其中:
<Name> 是使用经典模式身份验证的新 Web 应用程序的名称。
<ApplicationPool> 是应用程序池的名称。
<WindowsAuthType> 是"NTLM"或"Kerberos"。 建议选择"Kerberos"。
<ApplicationPoolAccount> 是运行此应用程序池的用户帐户。
<Port> 是用于在 IIS 中创建 Web 应用程序的端口。
<URL> 是 Web 应用程序的公用 URL。
注意
有关详细信息,请参阅New-SPWebApplication。
注意
成功创建 Web 应用程序后,当您打开"管理中心"页时,您将看到一个运行状况规则警告,指示采用经典身份验证模式启用了一个或多个 Web 应用程序。 这就是为何我们建议使用基于声明的身份验证而不是经典模式身份验证。
将 SharePoint 2013 经典模式 Web 应用程序转换为使用基于声明的身份验证的具体步骤
在 PowerShell 命令提示符下,键入以下内容:
Convert-SPWebApplication -Identity "http:// <servername>:port" -From Legacy -To Claims -RetainPermissions [-Force]
其中:
- <servername> 是服务器的名称。
将 Web 应用程序转换为使用基于声明的身份验证后,必须验证用户能否访问它。有关详细信息,请参阅 New-SPWebApplication、Get-SPManagedAccount 和 Convert-SPWebApplication。
将 SharePoint 2010 产品 经典模式 Web 应用程序迁移到 SharePoint 2013 经典模式 Web 应用程序
在 SharePoint 2013 中,完成以下过程可创建经典模式 Web 应用程序,然后将现有的 SharePoint 2010 产品经典模式 Web 应用程序迁移到 SharePoint 2013。
将 SharePoint 2010 产品 经典模式 Web 应用程序迁移到 SharePoint 2013 的具体步骤
- 确认您具有以下成员身份:
SQL Server 实例上的 securityadmin 固定服务器角色。
要更新的所有数据库上的 db_owner 固定数据库角色。
运行 PowerShell cmdlet 的服务器上的 Administrators 组。
必须阅读 about_Execution_Policies (https://go.microsoft.com/fwlink/p/?LinkId=193050) 。
添加至少具有以上最小权限的成员。
管理员可使用 Add-SPShellAdmin cmdlet 来授予使用 SharePoint 2013 cmdlet 的权限。
注意
[!注意] 如果您不具有这些权限,请联系您的安装管理员或 SQL Server 管理员来请求权限。 有关 PowerShell 权限的其他信息,请参阅"权限"和 Add-SPShellAdmin。
- 在 PowerShell 命令提示符下,键入以下内容:
New-SPWebApplication -name "ClassicAuthApp" -Port 100 -ApplicationPool "ClassicAuthAppPool" -ApplicationPoolAccount (Get-SPManagedAccount "<domainname>\<user>")
其中:
- <domainname>\ <user> 是服务器所属的域和用户帐户的名称。
- 将两个现有的 SharePoint 2010 产品内容数据库附加到新的 SharePoint 2013 经典模式 Web 应用程序。 请确认内容数据库在附加后可正常运行。 有关详细信息,请参阅在 SharePoint Server 中附加或分离内容数据库。
有关详细信息,请参阅 New-SPWebApplication 和 Get-SPManagedAccount。