6

Estoy intentando configurar inicio de sesión único para 2 sitios web que residen en el mismo dominioInicio de sesión único con autenticación de formularios

p.

http://mydomain (sitio de nivel superior que contiene una página de acceso formas-auth)

http://mydomain/admin (página web por separado desarrollado que reside en una aplicación virtual en el sitio Web principal)

¿Ha leído algunos artículos sobre el inicio de sesión único por ej.

http://www.codeproject.com/KB/aspnet/SingleSignon.aspx

http://msdn.microsoft.com/en-us/library/dd577079.aspx

Y parecen sugerir que es sólo un caso de tener la misma sección machinekey en cada web.config para que el cifrado y descifrado de cookies es la misma para cada aplicación

Configuré esto y nunca me pidieron credenciales en el sub-sitio web (la aplicación virtual)

Siempre me preguntan en el sitio principal.

Además de tener la misma machinekey También he intentado añadir los mismos <authentication> y <authorisation> elementos

Cualquier idea de lo que podría faltar?

+0

¿Algún éxito con esta pregunta? – AlfeG

Respuesta

1

que había utilizado <clear/> en la sección de httpModules, ya que no había elementos de la matriz que no existían en el directorio bin para el niño (/ admin)

Al hacerlo (usando <clear/> que es) que tenía inadvertidamente despejado el módulo de FormsAuthentication se especifica en el web.config en C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ cONFIG

así que tenía que volver a añadir los que explícitamente al niño (/ admin) config

+0

Estoy tratando de hacer algo similar. ¿Podemos tener formularios AuthN y SSO para el mismo sitio web? Tal vez tenga dos páginas de inicio diferentes, pero solo web.config? ¿Algún comentario, sugerencia? – VoodooChild

0

Intente configurar la sección httpCookies en el archivo web.config de ambas aplicaciones para usar el mismo dominio. De esta forma, cuando inicies sesión en una aplicación, la cookie FormsAuthentication que obtienes será visible para la otra aplicación.

+0

gracias por la sugerencia - desafortunadamente eso no ha hecho ninguna diferencia – ChrisCa

1

Su sección de formularios de web.config debe ser la misma también.

Quote from - Forms Authentication Across Applications

Para configurar la autenticación de formularios en todas las aplicaciones, configurar atributos de las formas y secciones machineKey del archivo Web.config a los mismos valores para todas las aplicaciones que están participando en la autenticación de formularios compartido.

El siguiente ejemplo muestra la sección Autenticación de un archivo Web.config . A menos que se indique lo contrario, los atributos de descifrado name, protection, path, validationKey, validation, decryptionKey y deben ser idénticos en todas las aplicaciones. Del mismo modo, el cifrado y valores clave de validación y el esquema de cifrado y validación esquema utilizado para las entradas de autenticación (datos de cookies) debe ser el mismo. Si la configuración de no coincide, las entradas de autenticación no se pueden compartir.

+0

gracias - como dije anteriormente, he intentado con las mismas secciones de autenticación y autorización Lo que he notado es que cuando utilizo una ruta completamente calificada para el loginURL p.ej "http: //mydomain/login.aspx" Me piden las Credenciales de Windows (no la página de inicio de sesión de formularios que esperaría) – ChrisCa

+0

Solo quiero asegurarme de que lo entiendo bien. Si inicia sesión en Mydomain debe estar autenticado para Mydomain/admin y esto funciona bien. ¿Y quieres que funcione al revés también? es decir, cuando inicia sesión en el administrador, ¿está autenticado para Mydomain? ¿Has echado un vistazo a tu código de autenticación en MyDomain? ¿De alguna manera difiere de/admin? –

+0

No. Cuando visito mydomain, que contiene la página de inicio de sesión, me gustaría ser autenticado para mydomain y también mydomain/admin. Cuando visito http: // mydomain, me redireccionan a la página de inicio de sesión, que es lo que quiero que suceda. Cuando visito http: // mydomain/admin, no me redireccionan; tengo acceso completo al sitio/admin. es decir, no está recogiendo la autenticación del padre – ChrisCa

0

Necesita tener los mismos elementos de autenticación en el web.config. En el elemento de formularios contenidos, asegúrese de darle a cada aplicación el mismo valor para el atributo de nombre. Para el atributo loginUrl, utilizo una ruta relativa y uso la misma página de inicio de sesión para todas las aplicaciones (p.loginUrl = "/ MainApp/login.aspx").

Además, ¿está creando el ticket de autenticación manualmente?

+0

sí, he intentado con una ruta local (login.aspx) en el padre, y una ruta completa (mydomain/login.aspx) en/admin, pero nunca me redirigen al página de inicio de sesión en/admin. Si pongo una ruta completa en ambos, me envían una solicitud de inicio de sesión de Windows (no el inicio de sesión de la página de formularios). ha intentado todas las configuraciones de seguridad en IIS pero no puede ser redirigido a la página de inicio de sesión en el sitio secundario – ChrisCa

+0

¿Está tratando de mostrar la página de inicio de sesión incluso cuando el usuario ya inició sesión en el sitio que no es administrador? Además, ¿está poniendo la sección restringir usuarios en el elemento de autorización? –

Cuestiones relacionadas