Inquiridor
LDAP com ASP.Net - Pegar nome de usuário logado no Windows quando inicia página da intranet

Pergunta
-
Boa tarde.
Estou precisando com certa urgência, saber como faço para pegar o nome de usuário que está logado na máquina (Windows) assim que inicia a página da intranet da empresa.
Os usuários se logan através de Active Directory (quando iniciam o Windows), ou seja, já é feita uma autenticação no domínio.
Já tentei fazer o seguinte na minha própria máquina para testar:
protected void Page_Load(object sender, EventArgs e)
{
string principal = this.Context.User.Identity.Name;
principal = principal.Substring(principal.IndexOf("\\") + 1);
Response.Write(principal);string strName = Request.ServerVariables["AUTH_USER"];
Response.Write(strName);string usuario = HttpContext.Current.User.Identity.Name.ToString();
Response.Write(usuario);String username = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Response.Write(username);
}Realmente me retorna, porém quando algum outro usuário da rede tenta acessar essa página de teste, abre uma tela para ele inserir Login e senha. O modo de autenticação no IIS está como "Windows authentication".
Se ele colocar o login e senha, funciona, porém necessito de um modo o nome do usuário logado seja coletado, sem que precise de uma tela de login.
Alguém saberia algum caminho que posso estar seguindo para conseguir resolver esse problema ?? As informações que encontrei através de pesquisas no Google e em outros sites informam quase 100% das vezes o modo com o "form authetication", ou seja, com essa tela de login.
Obrigado antecipadamente pela ajuda.
Alexandre
Todas as Respostas
-
Code Snippet
//=======================================================
//Place this at the top, above your namespace declarationusing System.Security.Principal;
//=======================================================
//In a specific event, place the following.string a;
a = System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();MessageBox.Show(a.ToString());
-
Macul,
Agradeço a resposta, mas quando eu uso esse código que você passou aparece para mim"NT AUTHORITY\NETWORK SERVICE"
E eu preciso do nome do usuário que logou no Windows.
Alguma alteração no web.config é necessário ??
Obrigado,
Alexandre
-
Desculpe,
assim só funciona windows forms
segue :
Code SnippetDim arstrUsuario() = Split(Context.User.Identity.Name, "\")
Dim strUsuario As String = arstrUsuario(1)Esse está funcionando em um programa meu. Como vc fez . Pelo que me lembro sempre aparece a tela de login.
-
Macul,
Obrigado novamente pela resposta.
Continuando novamente nas pesquisas pela internet, achei algo relacionado com o IIS, ou seja, acredito que seja a configuração do IIS, ou mesmo do web.config, que irá confrontar o usuário do Windows com o AD. Dessa forma, não irá precisar da tela de login.
Se tiver alguma idéia, agradeço!!
Att,
Alexandre
-
-