Come si ottiene il registrato in un account di dominio di Windows da un ASP.NET applicazione?

StackOverflow https://stackoverflow.com/questions/54050

  •  09-06-2019
  •  | 
  •  

Domanda

Abbiamo un'ASP.NET applicazione che gestisce i propri Utenti, Ruoli e Permessi di database e di recente abbiamo aggiunto un campo per l'Utente tabella per tenere l'account di dominio di Windows.

Vorrei fare in modo che l'utente non deve fisicamente accedere all'applicazione, ma un essere registrati automaticamente in base attualmente connesso account di dominio di Windows DOMINIO ome utente.Ci vogliono per autenticare l'account di dominio di Windows contro la nostra tabella degli Utenti.

Questo è un pezzo di torta per fare in Windows Form, è possibile fare questo Web Form?

Non voglio che l'utente venga richiesto con Windows sfida schermo, voglio che il nostro sistema per gestire il log in.

Chiarimento:Stiamo usando il nostro custom oggetto Principale.

Chiarimento:Non so se fa differenza o no, ma stiamo usando IIS7.

È stato utile?

Soluzione

Ho fatto praticamente esattamente che cosa si vuole fare un paio di anni fa.Im cercando di trovare un po ' di codice per esso, anche se era in un precedente lavoro, in modo che il codice è a casa.

Mi ricordo se ho usato questo articolo come punto di partenza.Impostare il provider LDAP in modo che si può effettivamente eseguire un controllo dell'utente vs LDAP.Una cosa per assicurarsi che se si tenta LDAP approccio.Nel file di configurazione, che consente di configurare LDAP assicurarsi LDAP è tutto in maiuscolo, se non è questo, non risolvere.

Altri suggerimenti

L'integrazione di questo tipo è a livello di server IIS che decide che l'utente non è connesso;e IIS che invia la richiesta di autenticazione per l'utente, al quale il browser si reagisce.

Come si desidera utilizzare l'account di accesso di dominio c'è un solo modo per fare questo; l'autenticazione integrata di windows.Questo funziona solo se il server IIS è anche una parte del dominio e gli utilizzatori di accedere alla macchina direttamente, non attraverso un proxy, e da macchine che sono anche parte del dominio (con gli utenti opportunamente connesso).

Tuttavia, il vostro personalizzato principale oggetto possono creare giochi e divertimento;autenticazione di questo tipo sarà un WindowsPrincipal e WindowsIdentity;cui è possibile accedere tramite l'oggetto Utente (vedere Come:Utilizzare l'Autenticazione di Windows in ASP.NET 2.0)

Presumo che tu voglia un'entità personalizzata a causa di i vostri ruoli personalizzati?Dubito si può ottenere il due per giocare bene;si potrebbe creare un custom ruolo di fornitore di che guarda l'archivio dati o guarda che si poteva guardare ADAM, un'estensione per ANNUNCIO che fornisce ruoli per il programma di base e viene fornito con una bella strumenti di gestione.

using System.Security.Principal;
...
WindowsPrincipal wp = (WindowsPrincipal)HttpContext.Current.User;

per ottenere l'attuale utente di dominio.Naturalmente, è necessario assicurarsi che IIS è configurato per gestire l'Autenticazione di Windows.

Questo potrebbe essere utile:

WindowsIdentity myIdentity = WindowsIdentity.GetCurrent();

WindowsPrincipal myPrincipal = new WindowsPrincipal(myIdentity);

string name = myPrincipal.Identity.Name;
string authType = myPrincipal.Identity.AuthenticationType;
string isAuth = myPrincipal.Identity.IsAuthenticated.ToString();

string identName = myIdentity.Name;
string identType = myIdentity.AuthenticationType;
string identIsAuth = myIdentity.IsAuthenticated.ToString();
string iSAnon = myIdentity.IsAnonymous.ToString();
string isG = myIdentity.IsGuest.ToString();
string isSys = myIdentity.IsSystem.ToString();
string token = myIdentity.Token.ToString();

Disclaimer:Ho ricevuto questo da un articolo di technet, ma non riesco a trovare il link.

È possibile utilizzare System.Threading.Thread.CurrentPrincipal.

Richiesta.ServerVariables["REMOTE_USER"]

Questo è verificato per il tuo setup, ma mi ricordo che utilizza questo un po ' indietro.

Provare A Richiesta.ServerVariables("LOGON_USER").

Se la directory di sicurezza opzioni sono impostate in modo che la directory non consentire agli utenti anonimi, quando il navigatore colpisce questa pagina sarà richiesto con lo standard della finestra di dialogo modale che chiede nome utente e password.Richiesta.ServerVariables("LOGON_USER") restituirà l'utente.

Tuttavia, questo probabilmente non funzionerà per voi, perché si sta utilizzando il proprio oggetti di protezione personalizzata.Se si riesce a capire come muoversi in quella finestra di accesso, o passare in NT credenziali al sito prima che ti chiede loro, allora si dovrebbe essere tutto a posto.

Avete mai pensato di rappresentazione?È possibile memorizzare l'utente NT credenziali di accesso personalizzate oggetto di protezione, e poi basta impseronate utente tramite codice, quando appropriato.

http://msdn.microsoft.com/en-us/library/aa292118(VS.71).aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top