Cambiar de Usuario al proceso aspnet_wp: Error: "El usuario no está asociado a una conexión de SQL Server de confianza"

Hola, si bien recuerdan en este post usabamos el Active Directory para login de una aplicacion, Ahora el escenario cambia un poco , imaginemos esto:

image

Imagenense si tuvieramos dos servidores uno donde tuviesemos nuestra base de datos y otro donde estuviese nuestro servidor web,

ocurre que en ese caso , cuando tenemos una aplicacion web( en el IIS) al ejecutarla arranca el proceso aspnet_wp , ocurre que por defecto el usuario que ejectuta el proceso aspnet_wp es “ASPNET” o Machine\ASPNET y ese usuario no tiene accesos a nuestra base de datos (que esta en otro servidor), y nos lanza el mensaje “El usuario no está asociado a una conexión de SQL Server de confianza “

Observemos que el usuario ASP.NET, por defecto es quien ejecuta el proceso aspnet_wp.exe

 image

Para esto debemos de cambiar al usuario que ejecuta el proceso aspnet_wp , cambiandolo por un usuario que tenga acceso a nuestra base de datos , si estamos dentro de un dominio , a nuestro usuario de dominio. Esto lo podemos realizar de la siguiente manera:

Ubicar el archivo machine.config

En mi caso como tengo en el C: instalado mi S.O.

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG

Modificar machine.config:

<processModel userName=”(DOMINIO)\usuario” password=<contraseña> autoConfig=”False” />

En mi caso mi usuario de dominio es: jose.rojas y este es ahora quien ejecuta el proceso aspnet_wp.exe

image

 

Poner el nombre del dominio ,si estuviesen dentro de un dominio , junto con el nombre del usuario y contraseña.

En Nuestro web.config:

Removemos nuestra cadena de conexion, pq esta generalmente viene configurada por defecto,

Escogemos nuestro Provider de Membresia: <profile defaultProvider=”AspNetSqlMembershipProvider”/>

Escogemos nuesto Administrador de Roles:  <roleManager defaultProvider=”AspNetSqlRoleProvider” /> 

Autenticacion basada en formularios, y que indique el formulario de login es “Login.aspx”

Permitir solo usuario logeodos:<allow users=”*”/> y No usuarios Anonimos <deny users=”?” />

<?xml version=”1.0″ encoding=”utf-8″?>
<configuration>   
    <connectionStrings>
        <remove name=”LocalSqlServer” />
        <add name=”LocalSqlServer” connectionString=”data source=(TU SERVIDOR);Integrated Security=SSPI;Initial Catalog=(TU BD);”
            providerName=”System.Data.SqlClient” />
    </connectionStrings> 
    <system.web>
      <authorization>
        <allow users=”*”/>
        <deny users=”?” />       
      </authorization>
      <roleManager defaultProvider=”AspNetSqlRoleProvider” />     
     <profile defaultProvider=”AspNetSqlMembershipProvider”/>           
        <compilation debug=”true” />       
        <authentication>
            <forms loginUrl=”Login.aspx” />
        </authentication>       
    </system.web>
</configuration>

image

Despues de Logearnos correctamente la Pagina de destino es “Default.aspx”

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
        {
            bool Authenticated = false;
            Authenticated = Membership.ValidateUser(Login1.UserName, Login1.Password);
            e.Authenticated = Authenticated;
            if (Authenticated == true)
            {
                this.Login1.DestinationPageUrl=”Default.aspx”;               
            }
        }  

En Nuestra pagina default.aspx:

Solo arrastrar un Control “LoginName” y ya esta…. , espero les sirva bastante

Jose Fabricio Rojas


Acerca de esta Entrada