Síntomas
Imagine la siguiente situación:
-
Use la autenticación de notificaciones de Windows (a través de desafío/respuesta de Windows [NTLM] o Kerberos) en una aplicación Web de Microsoft SharePoint Server 2013.
-
Decide cambiar a notificaciones de proveedor de confianza mediante un proveedor basado en el lenguaje de marcado de aplicaciones seguras (SAML), como servicios de Federación de Active Directory (AD FS).
-
Revise los pasos del tema migración de la autenticación de notificaciones de Windows para la autenticación de notificaciones basadas en SAML en SharePoint Server 2013 en el sitio web de Microsoft Developer Network (MSDN).
-
Ejecute el siguiente comando:
Convertir-SPWebApplication-ID $wa-a CLAIMs-TRUSTed-DEFAULT-from CLAIMs-WINDOWS-TrustedProvider $tp-SourceSkipList $csv-RetainPermissions
En esta situación, aparece este mensaje de error:
La autenticación basada en SAML no es compatible.
Causa
Este problema se produce porque el emisor de token de identidad de confianza no se creó con la configuración predeterminada. Para que el comando Convert-SPWebApplication funcione correctamente, debe usar la configuración predeterminada. El comando Convert-SPWebApplication requiere una configuración específica para el proveedor de confianza para que sea compatible con la conversión de notificaciones de Windows a SAML o viceversa. Específicamente, el emisor de token de identidad de confianza debe crearse con los parámetros UseDefaultConfiguration y IdentifierClaimIs . Puede comprobar si el emisor de token de identidad de confianza se creó con el parámetro UseDefaultConfiguration ejecutando los siguientes scripts de Windows PowerShell.Nota: Estas secuencias de comandos suponen que solo tiene un proveedor de identidad de confianza creado en el conjunto de servidores actual.
$tp = Get-SPTrustedIdentityTokenIssuer$tp.claimtypes
Los tipos de notificación que debe mostrar esta secuencia de comandos son los siguientes:
-
http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname
-
http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid
-
http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid
-
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
-
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn
#Get the Identity claim:$tp = Get-SPTrustedIdentityTokenIssuer$tp.IdentityClaimTypeInformation
La notificación de identidad debe ser una de las siguientes:
-
WindowAccountName
-
EmailAddress
-
PRINCIPAL
Salida de ejemplo de $tp. IdentityClaimTypeInformation: DisplayName: email InputClaimType: http://schemas.xmlsoap.org/WS/2005/05/Identity/Claims/EmailAddressMappedClaimType: http://schemas.xmlsoap.org/WS/2005/05/Identity/Claims/EmailAddress#IsIdentityClaim : true debe haber un proveedor de notificaciones personalizado con el mismo nombre que el emisor de tokens y debe ser de tipo SPTrustedBackedByActiveDirectoryClaimProvider. Ejecute esto para ver si el proveedor de notificaciones está presente y es compatible:
$tp = Get-SPTrustedIdentityTokenIssuer$name = $tp.name$cp = Get-SPClaimProvider $nameif($cp.typename -match "SPTrustedBackedByActiveDirectoryClaimProvider"){write-host "Claim provider is present and has TypeName of " $cp.typename " it should be valid"}else{write-host "Claim provider is not present. Trusted Identity Token Issuer" $tp.name " is not compatible with convert-spwebapplication"}
Resolución
Para resolver este problema, elimine y vuelva a crear el emisor de token de identidad de confianza. Para ello, siga estos pasos:
-
Ejecute el siguiente script:
$tp = Get-SPTrustedIdentityTokenIssuer$tp | fl$tp.name$tp.IdentityClaimTypeInformation
Haga una copia de la salida de esta secuencia de comandos para referencia futura. En particular, necesitamos el valor de la propiedad Name para que el nuevo emisor de tokens se pueda crear con el mismo nombre, y necesitamos la notificación de identidad para que el nuevo proveedor de notificaciones pueda crearse con la misma notificación de identidad. Siempre que se use el mismo nombre para el emisor de tokens y la misma notificación se use como notificación de identidad, todos los usuarios mantendrán sus permisos dentro de la aplicación web después de que se vuelva a crear el emisor de tokens.
-
Quitar el proveedor de identidad de confianza actual de proveedores de autenticación para cualquier aplicación web que lo esté usando actualmente.
-
Elimine el emisor de tokens ejecutando el siguiente comando:
Remove-SPTrustedIdentityTokenIssuer -Identity "TheNameOfYourTokenIssuer"
-
Vuelva a crear el emisor de tokens. Para ello, siga los pasos que se indican en el tema implementar la autenticación basada en SAML en SharePoint Server 2013 en el sitio web de Microsoft TechNet para obtener más información.Importante Al ejecutar el comando nuevo-SPTrustedIdentityTokenIssuer , debe usar los parámetros UseDefaultConfiguration y IdentifierClaimIs . El parámetro UseDefaultConfiguration es simplemente un modificador. Los valores posibles para el parámetro IdentifierClaimIs son los siguientes:
-
NOMBRE DE CUENTA
-
Correo electrónico
-
PRINCIPAL DE USUARIO: NOMBRE
Script de ejemplo:
$ap = New-SPTrustedIdentityTokenIssuer -Name $tokenIdentityProviderName -Description $TrustedIdentityTokenIssuerDescription -realm $siteRealm -ImportTrustCertificate $adfsCert-SignInUrl $signInUrl -UseDefaultConfiguration -IdentifierClaimIs EMAIL -RegisteredIssuerName $siteRealm
-
-
En administración central, vuelva a agregar el nuevo emisor de token de identidad de confianza a los proveedores de autenticación de la aplicación web que está intentando convertir. La aplicación Web debe tener seleccionada la autenticación de Windows y el proveedor de identidades de confianza de destino seleccionado.
Más información
Sugerencias adicionales para la conversión correcta: si se usa el valor de correo electrónico para la notificación de identificador (es decir, para el parámetro IdentifierClaimIs ), solo se convertirán los usuarios cuyas direcciones de correo electrónico estén rellenadas en Active Directory. Todas las cuentas de usuario que aparecen en el archivo. csv que se define en el parámetro SourceSkipList no se convertirán en SAML. Para la conversión de notificaciones de Windows a SAML, los nombres de cuenta de usuario se pueden mostrar con o sin la notación de notificaciones. Por ejemplo, "contoso\user1" o "i:0 #. w | contoso\user1" es aceptable. Debe agregar a ese archivo. csv todas las cuentas de usuario que no desee que se conviertan. Deben incluir cuentas de servicio y de administrador.