validar usuarios usuario usar tutorial sistema sesiones net mvc español contraseña con como autenticacion asp asp.net asp.net-membership membership

asp.net - usuarios - tutorial login asp net mvc



Uso de una base de datos de membresía de Asp.net con múltiples aplicaciones Inicio de sesión único (2)

Tengo dos aplicaciones asp.net en un servidor IIS y me gustaría usar la misma base de datos back-end asp_security y el proveedor de membresía. He leído que todo lo que tengo que hacer es hacer referencia al mismo nombre de la aplicación en ambas configuraciones web que estoy haciendo ahora, pero debo estar haciendo algo mal.

En cada aplicación web.config tengo esta sección.

<membership> <providers> <clear/> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="membership" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="false" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression="" /> </providers> </membership>

Cuando inicio sesión desde la aplicación A y navego a la aplicación B, la aplicación B parece no saber nada sobre mí o mis credenciales de la aplicación A. ¿Alguien tiene alguna idea de lo que estoy haciendo incorrectamente?


Si mi comprensión me sirve correctamente, las credenciales de autenticación de los usuarios se almacenan en el contexto HTTP de cada aplicación. Por lo tanto, el cambio entre las dos aplicaciones no autenticará automáticamente al usuario, ya que se creará un nuevo contexto cuando cambie a la aplicación B.

Lo que creo que podría ser el enfoque correcto sería usar las propiedades DefaultCredentials (o UseDefaultCredentials en True ) del usuario actual antes de cambiar a la aplicación B.

Cuando dices cambiar lo que quieres decir, por ejemplo. abra una ventana diferente del navegador y acceda a la aplicación B o solicite una página desde appB desde appA?


Solo por el bien del cierre, responderé cómo logré el objetivo de lo que mi pregunta original significaba pedir.

Tenía dos aplicaciones asp.net en un servidor IIS. Mi objetivo era lograr que, cuando el usuario iniciara sesión en app1, sus credenciales de usuario estuvieran disponibles en app2. Configurar el proveedor de membresía asp.net es solo un paso de lo que estaba buscando. Incluso si ambas aplicaciones estuvieran usando la misma base de datos de back-end y el mismo proveedor, todavía no estaría autenticado cuando presionara app2. Lo que estaba buscando era una solución de inicio de sesión único.

Una vez que tenga ambas aplicaciones apuntando a su base de datos asp_membership, coloque lo siguiente en la sección system.web de su configuración web

<authentication mode="Forms" /> <membership> <providers> <clear/> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="membership" applicationName="/" /> </providers> </membership> <roleManager enabled="true" />

asegúrese de que ambos tengan el mismo conjunto de propiedades de nombre de aplicación.

Estaba usando IIS 6, así que lo configuré para generar automáticamente una clave de máquina para ambas aplicaciones. Debido a que ambas aplicaciones viven en la misma máquina, la clave sería idéntica, esta es la parte crítica para hacer que el SSO funcione. Después de configurar IIS, se agregó lo siguiente a mi web.config

<machineKey decryptionKey="AutoGenerate" validation="SHA1" validationKey="AutoGenerate" />

Eso era todo lo que habia al respecto. Una vez hecho esto, pude iniciar sesión en app1 y luego navegar a app2 y conservar mis credenciales de seguridad.

Gracias por el empuje en la dirección correcta.