2012-10-04 40 views
5

Tengo algunos problemas al usar SSRS actualmente. Tengo un sitio web ASP.NET que usa Autenticación de Windows. Eso funciona bien y sé que el usuario actual del sitio web es el usuario que actualmente está conectado.Autenticación de Windows con SSRS ASP.NET ReportViewer y servicio web

En este sitio se encuentra un formulario de Web ReportViewer. Esto funciona bien cuando no configuro credenciales. Sin embargo, al mirar el registro de ejecución de los informes en SQL Server, el nombre de usuario aparece como DOMINIO \ MÁQUINA.

He tratado de establecer la propiedad ReportServerCredentials a una clase como la siguiente:

[Serializable] 
public class ReportCredentials : IReportServerCredentials 
{ 

    public bool GetFormsCredentials(out Cookie authCookie, out string userName, out string password, out string authority) 
{ 
    authCookie = null; 
    userName = null; 
    password = null; 
    authority = null; 

    return false; 
} 

public WindowsIdentity ImpersonationUser 
{ 
    get { 
     return (WindowsIdentity)HttpContext.Current.User.Identity; 
    } 
} 

public ICredentials NetworkCredentials 
{ 
    get { 
     return null; 
    } 
} 

}

Sin embargo, cuando este código se ejecuta ahora consigo una vuelta 401 del servicio web y el informe Servicio.

¿Qué está pasando? Ambos están en el mismo dominio. Quiero usar el usuario actual y no el equipo actual. Si ejecuto el informe en el servidor de informes, aparece bajo el nombre de usuario correcto, pero no desde mi sitio web.

Respuesta

0

En lugar de

return (WindowsIdentity)HttpContext.Current.User.Identity; 

Usted podría intentar

return WindowsIdentity.GetCurrent(); 
+0

Yeh I intentó que la primera, pero todavía tiene un 401 :( – Lloyd

+0

En realidad, yo decir una mentira, debe haber sido almacenado en caché. El informe ahora se ejecuta, pero el nombre de usuario se registra como \t PERSONAL \ UKBRISDDWRKA424 $ que es la máquina. Grrr. – Lloyd

4

que estaba teniendo mis propios problemas aquí, pero finalmente fue exitosa.

Máquina 1: navegador del cliente

Máquina 2: servidor web

Máquina 3: SSRS + SQL Server

Para resolver el doble salto que tenía el turno departamento de TI en la Delegación de Active Directory para Machine2, configurando "Confiar en esta computadora para delegar en cualquier servicio (solo Kerberos)".

En mi servidor web I modificado el archivo Web.config para tener:

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

En el servidor SSRS he modificado el archivo rsreportserver.config, añadiendo <RSWindowsNegotiate/> a la sección <AuthenticationTypes>. Creo que el valor predeterminado es <RSWindowsNTLM/>. Acabo de salir de allí tanto, dándome:

me reinicia el servidor SSRS y todos empezaron a trabajar.

Espero que esto ayude a alguien!

Cuestiones relacionadas