6

Sto tentando di impostare Single Sign-On per 2 siti Web che risiedono nello stesso dominioSingle Sign On con autenticazione moduli

ad es.

http://mydomain (sito di livello superiore che contiene una pagina di login forme-auth)

http://mydomain/admin (sito web separatamente sviluppato residente in un Virtual Application all'interno del sito genitore)

aver letto un paio di articoli su Single Sign-On es

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

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

E sembrano suggerire è solo un caso di avere la stessa sezione machinekey in ogni web.config in modo che la crittografia e la decrittografia dei cookie è la stessa per ogni applicazione

L'ho impostato e non mi viene mai richiesto di immettere credenziali nel sito Web secondario (l'applicazione virtuale)

Viene sempre richiesto nel sito principale.

Oltre ad avere lo stesso machinekey Ho anche provato ad aggiungere gli stessi <authentication> e <authorisation> elementi

Qualsiasi idea di che cosa potrei mancare?

+0

Qualsiasi successo con questa domanda? – AlfeG

risposta

1

avevo usato <clear/> nella sezione httpModules, in quanto vi erano elementi del genitore che non esistevano nella directory bin per il bambino (/ admin)

In tal modo (usando <clear/> che è) ho avuto inavvertitamente eliminato il modulo FormsAuthentication specificato nel web.config in C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ cONFIG

quindi avevo bisogno di aggiungere nuovamente quelle esplicitamente al bambino (/ admin) config

+0

Sto provando a fare qualcosa di simile. Possiamo avere moduli AuthN e SSO per lo stesso sito web? Forse hanno due diverse pagine iniziali, ma single web.config? Eventuali commenti, suggerimenti? – VoodooChild

0

Provare a configurare la sezione httpCookies nel file web.config di entrambe le applicazioni per utilizzare lo stesso dominio. In questo modo quando accedi a un'app il cookie FormsAuthentication che ottieni sarà visibile all'altra applicazione.

+0

grazie per il suggerimento - purtroppo non ha fatto alcuna differenza – ChrisCa

1

La sezione relativa alle forme di web.config deve essere la stessa.

Quote from - Forms Authentication Across Applications

Per configurare l'autenticazione forme tra le applicazioni, è possibile impostare gli attributi delle forme e sezioni machineKey del file web.config per gli stessi valori per tutte le applicazioni che partecipano autenticazione basata su form condiviso.

L'esempio seguente mostra la sezione di autenticazione di un file Web.config . Salvo diversa indicazione, il nome validationKey, convalida, decryptionKey e attributi di decodifica devono essere identici in tutte le applicazioni. Analogamente, i valori della chiave di convalida della crittografia e e lo schema di codifica di crittografia utilizzati per i ticket di autenticazione utilizzati per i ticket di autenticazione (dati dei cookie) devono essere uguali. Se le impostazioni di non corrispondono, i ticket di autenticazione non possono essere condivisi.

+0

grazie - come ho detto prima, ho provato con le stesse sezioni di autenticazione e autorizzazione OPne cosa che ho notato è che quando utilizzo un percorso completo per il loginURL per esempio "http: //mydomain/login.aspx" Vengo avvisato per le credenziali di Windows (non per la pagina di accesso dei moduli che mi aspetto) – ChrisCa

+0

Voglio solo assicurarmi di aver capito bene. Se accedi a Mydomain dovresti essere autenticato per Mydomain/admin e questo funziona correttamente. E vuoi che funzioni anche l'altro modo? vale a dire quando accedi ad admin il tuo autenticato per Mydomain? Hai dato un'occhiata al tuo codice di autenticazione in MyDomain? In qualche modo differisce da/admin? –

+0

No. Quando visito mydomain, che contiene la pagina di accesso, vorrei essere autenticato per mydomain e anche mydomain/admin. Quando visito http: // mydomain, viene reindirizzato alla pagina di accesso, che è ciò che voglio che accada. Quando visito http: // mydomain/admin, non vengo reindirizzato: ho pieno accesso al sito/admin. cioè non sta raccogliendo l'autenticazione dal genitore – ChrisCa

0

È necessario disporre degli stessi elementi di autenticazione in web.config. Nell'elemento moduli contenuti, assicurati di assegnare a ciascuna applicazione lo stesso valore per l'attributo nome. Per l'attributo loginUrl, utilizzo un percorso relativo e utilizzo la stessa pagina di accesso per tutte le applicazioni (ad es.loginUrl = "/ MainApp/login.aspx").

Inoltre, si sta creando manualmente il ticket di autenticazione?

+0

sì, ho provato con un percorso locale (login.aspx) nel genitore e un percorso completo (mydomain/login.aspx) in/admin, ma non sono mai stato reindirizzato al pagina di accesso su/admin. Se inserisco un percorso completo in entrambi, viene richiesto un prompt di accesso di Windows (non l'accesso alla pagina dei moduli). ho provato tutte le impostazioni di sicurezza in IIS ma non posso essere reindirizzato alla pagina di login sul sito figlio – ChrisCa

+0

Stai provando a visualizzare la pagina di accesso anche quando l'utente ha già effettuato l'accesso al sito non amministratore? Inoltre, stai mettendo la sezione utenti limitati nell'elemento di autorizzazione? –

Problemi correlati