2009-07-31 14 views
6

Ho alcuni siti Web per lavori che vivono al di fuori della LAN aziendale e, quindi, al di fuori della gamma di comunicazione diretta di Active Directory (A/D), ma per i quali mi piacerebbe poter autenticare gli utenti contro i server A/D aziendali e un repository secondario di utenti/ruoli ***. Lo pseudo codice per questa attività è questo:Come autenticarsi con Active Directory dal codice del servizio Web ASP.NET?

  1. L'utente inserisce nome utente/password nel modulo di accesso del sito Web esterno.
  2. Il sito Web esterno chiama un servizio Web all'interno della LAN che può parlare con A/D.
  3. Il servizio Web verifica se il nome utente/password possono essere autenticati associati a un utente in A/D. In tal caso, restituire l'elenco dei ruoli A/D di cui l'utente è membro.
  4. Se il nome utente/password non possono essere trovati/autenticati contro A/D, controllare un database/servizio che è il repository secondario delle informazioni utente/ruolo. Restituisce tutti i ruoli in cui si trova se si autenticano con il server di autenticazione secondario.
  5. Restituisce un elenco di ruoli in cui l'utente si trova nel sito Web di chiamata.

*** L'idea è che non vogliamo mettere dozzine - potenzialmente centinaia - di appaltatori e affiliati in Active Directory quando accederanno solo ai nostri server web esterni. Da qui lo schema di autenticazione secondario.

risposta

1

Penso che ci siano un paio di strati qui, ognuno la propria domanda:

Come posso arrivare a un servizio web all'interno del mio LAN dalla DMZ?
Questo è un problema difficile in quanto rompe davvero il concetto di una separazione DMZ/LAN. Generalmente le connessioni tra LAN e DMZ sono consentite (e su base limitata) dal lato LAN - in questo modo un DMZ comprimizzato non può iniziare il contatto con la LAN, ed è estremamente limitato in quello che può fare (non può emettere richieste arbitrarie, rispondere solo alle richieste dalla LAN).

Come posso utilizzare un servizio su un altro computer per autenticare un nome utente/password?
Anche in questo caso si tratta di un problema persistente: si passano le password su una rete, è possibile che vengano intercettate. Con AD questo è risolto con Kerberos - un sistema di sfida/risposta che garantisce che la password non venga mai effettivamente trasmessa. Ovviamente i kerberos e le protocals simili sono piuttosto complessi - non dovresti mai provare a lanciare il tuo perché probabilmente sarà meno sicuro di usare qualcosa di esistente - per esempio il tuo webservice potrebbe funzionare su https, in modo che almeno le password siano solo in chiaro due server, e non il collegamento di comunicazione tra loro. I certificati possono anche essere utilizzati per impedire che il traffico destinato al proprio webservice LAN venga reindirizzato a una macchina DMZ comprimata (la macchina DMZ comprimata non sarà in grado di simulare il certificato, e quindi il sistema può determinare che sia collegata a un server falso prima invio dei dettagli per l'autenticazione)

Nella mia esperienza personale questi problemi risultano in AD all'esterno della LAN, ma non vengono eseguiti. Le aziende optano per ottenere persone esterne sulla LAN usando VPN autenticato con chiavi RSA (quei piccoli portachiavi che mostrano un insieme di numeri in continua evoluzione), oppure usano un insieme di accessi completamente separati per i servizi dell'area DMZ.

+0

I server Web "esterni" si trovano nella DMZ e non possono accedere direttamente ai server A/D. Esiste, tuttavia, una regola firewall per consentire il traffico della porta 80/443 dagli specifici DMZ IPAddresses dei server Web esterni alla porta/indirizzo IP specifico del server delle app interno (asp.net). In futuro potremmo integrare completamente i server fuori sede, ma la stessa eccezione del firewall per porta e IP consentirebbe comunque ai server Web esterni di richiamare le chiamate al servizio Web sul server delle app interne. –

1

Si potrebbe voler dare un'occhiata a queste due risorse. Il primo ti fornirà tutto ciò che vuoi sapere sulla directory attiva, mentre il secondo ti mostrerà come collegarti.

che potreste avere problemi di connessione al server AD distanza però. Quindi, come potenziale soluzione, prenderei in considerazione l'idea che l'applicazione web chiami un servizio web di autenticazione che risiede sulla rete aziendale.

+0

Penso che intendevi separare i collegamenti: http://www.codeproject.com/KB/system/everythingInAD.aspx http://msdn.microsoft.com/en-us/library/aa302397.aspx –

+0

yeah , ma al momento mi è consentito solo un collegamento ed entrambi sono necessari. Li ho trovati entrambi estremamente utili per l'implementazione di un problema simile che avevo. – andrewWinn

0

Potrebbe essere possibile semplificare questo dando un diverso portale di accesso agli appaltatori/affiliati.

+0

Le app in questione verranno utilizzate sia dagli utenti interni (A/D) sia dagli utenti esterni (non A/D). Un accesso deve gestire entrambi gli scenari. –

Problemi correlati