6

Ok, he pasado unas 15 horas intentando resolver este problema y finalmente me he resignado a publicar aquí para tratar de resolverlo. Sé que este post es muy extenso, pero he hecho todas las cosas normales que me van a pedir que haga, así que quiero asegurarme de que esté claro para que no perdamos el tiempo con eso.SharePoint 2013/IIS 7.5 Personificación/Delegación/Doble salto

Tengo una máquina virtual Win Server 2008 R2 alojada en un servidor ESXi 5.0. En este servidor he instalado SharePoint Foundation 2013 Preview, así como todas las prerrequisitos, etc. Estoy ejecutando todo desde este único servidor (MSSQL, IIS 7.5, servicios de SharePoint) ya que tendremos un uso muy limitado y solo tendremos unos 30 usuarios. Una cosa que necesitaba agregar desesperadamente a SharePoint es la capacidad de los usuarios para modificar su información en Active Directory (Server 2003) ya que nuestra AD apenas está poblada y está desactualizada. Encontré una WebPart perfecta y funciona de maravilla para los usuarios de edición.

El problema aparece cuando quiero configurar WebPart para que el usuario pueda editarse solo. El WebPart (apropiadamente) usa esta línea de código en C# .NET :. para obtener la Identidad actualmente registrada que se autenticó con Autenticación de Windows en IIS. En cambio, sin embargo, esto devuelve el usuario local NT AUTHORITY/IUSR. (Sé que esto no es nuevo para nadie).

System.Security.Principal.WindowsIdentity.GetCurrent().Name;

Así que empecé mi investigación y se aseguró de las siguientes cosas.

En mi web.config de SharePoint, Tengo el siguiente:

<authentication mode="Windows" /> <identity impersonate="true" />

En IIS, tengo la siguiente configuración de autenticación para el sitio web de IIS, que aloja mi instalación de SharePoint:

Anonymous Authentication Disabled 
ASP.NET Impersonation  Enabled 
Basic Authentication  Disabled HTTP 401 Challenge 
Digest Authentication  Disabled HTTP 401 Challenge 
Forms Authentication  Disabled HTTP 302 Login/Redirect 
Windows Authentication  Enabled  HTTP 401 Challenge 

Así que sé que el sitio aún está iniciando sesión con el usuario anónimo aunque tengo la autenticación anónima deshabilitada. Encontré información sobre el problema del doble salto que coincide con mis problemas y encontré este enlace y seguí todas las instrucciones en esta publicación: http://blogs.technet.com/b/taraj/archive/2009/01/29/checklist-for-double-hop-issues-iis-and-sql-server.aspx. Después de cada paso, revisé si había algún cambio en el comportamiento de la aplicación, pero nunca encontré ninguna.

En resumen, hizo lo siguiente:

  1. puedo configurar una cuenta de usuario de dominio para ejecutar el grupo de aplicaciones. Para las pruebas, convertí a este usuario en miembro del grupo Admins. Del dominio.
  2. Cambié una línea en web.config a <add key="aspnet:AllowAnonymousImpersonation" value="false" /> (era verdad). Esto impidió que el usuario de NT AUTHORITY \ IUSR ejecutara la aplicación y, en su lugar, se ejecutó bajo la cuenta de dominio que creé para ejecutar el grupo de aplicaciones. Ahora podía iniciar sesión en SharePoint y acceder a mi WebPart; sin embargo, como era de esperar, me presentó la información de AD para el usuario de dominio que ejecuta el Pool de aplicaciones, en lugar del usuario de dominio que se había autenticado. Así que sé que WebPart está funcionando y tiene los permisos necesarios, etc. pero System.Security.Principal.WindowsIdentity.GetCurrent().Name; sigue devolviendo al usuario que ejecuta el grupo de aplicaciones, es decir.la suplantación aún no funciona
  3. En AD Users and Computers, otorgué Trust this computer for delegation to any service para el servidor virtual en el que se ejecuta todo esto.
  4. Como no tenía una pestaña de "Delegación" para la cuenta de usuario de dominio que ejecutaba el grupo de aplicaciones, tuve que registrar un SPN para el usuario. Después de registrar todos los SPN que copié de la lista de SPN del servidor y también un par de http SPN que encontré en línea, y también estableciendo Trust this user for delegation to any service en el usuario, no hubo cambios en el comportamiento de la aplicación.
  5. que se aseguró de que el usuario de dominio que estaba iniciando una sesión con no se protegió de la delegación
  6. entré en el editor de la política local en el servidor de SharePoint y me aseguré se permitió que el usuario de dominio que ejecuta el grupo de aplicaciones a "actuar como parte del sistema operativo "y" Suplantar a un cliente después de la autenticación ".
  7. Otras cosas que me trataron
    • Añadir Negotiate:Kerberos como un proveedor de autenticación para Windows de autenticación en el sitio web de IIS
    • presencia confirmada de estas dos líneas en SharePoint web.config:

A continuación se encuentran mis registros de SPN en el DC:

setspn -l SPserver 
Registered ServicePrincipalNames for CN=SPserver,CN=Computers,DC=DOMAIN,DC=local: 
    MSSQLSvc/SPserver.DOMAIN.local:appPoolUser 
    WSMAN/SPserver 
    WSMAN/SPserver.DOMAIN.local 
    TERMSRV/SPserver 
    TERMSRV/SPserver.DOMAIN.local 
    RestrictedKrbHost/SPserver 
    HOST/SPserver 
    RestrictedKrbHost/SPserver.DOMAIN.local 
    HOST/SPserver.DOMAIN.local 



setspn -l appPoolUser 
Registered ServicePrincipalNames for CN=appPoolUser,OU=Utility,OU=Users,OU=Company Name,DC=DOMAIN,DC=local: 
    http/subdomain.domain.com 
    http/SPserver.DOMAIN.local 
    RestrictedKrbHost/appPoolUser.DOMAIN.local 
    RestrictedKrbHost/appPoolUser 
    MSSQLSvc/appPoolUser.DOMAIN.local:appPoolUser 
    HOST/appPoolUser 
    HOST/appPoolUser.DOMAIN.local 

Reinicié el servidor y IIS varias veces a lo largo de este proceso también. Sin embargo, cuando inicio sesión, mi elemento web me identifica como el usuario que ejecuta el grupo de aplicaciones. Sé que hay trabajo como usar un grupo de aplicaciones de modo clásico, pero eso está en desuso. Hay otras formas de obtener el nombre correcto en .NET también, pero no quiero tener que cambiar el elemento web y, lo que es más importante, esta es la forma correcta de hacerlo y debería poder hacerlo funcionar. No quiero tener que trabajar continuamente alrededor de eso.

Si alguien tiene más ideas de lo que podría estar causando el problema, ME ENCANTARÍA escucharlas.

+0

Solo quería actualizar esta publicación. Todavía no he encontrado una resolución y tampoco parece haberle llamado la atención a nadie más. Mientras tanto, modifiqué el código en el elemento web para que el usuario obtenga así: 'SPSite site = new SPSite (SPContext.Current.Web.Url.ToString());' 'SPWeb web = sitio .OpenWeb ("/"); ' ' SPUser user = web.CurrentUser; ' – user456151

Respuesta