Array
(
)

Exibir usuario autenticado ao logar

Jefferson
   - 19 ago 2015

Ola, alguem ja teve essa dificuldade?
Estou usando componente LoginView para exibir usuario da rede do dominio Bem vindo DOMINIO\usuario
So exibe na mha maquina local do rodo a aplicacao.

Mas qdo publico para o servidor, nao aparece.
Ja fiz as seguintes configuracoes:
----------------
. <authentication mode="Windows">
. No iis 7, na opcao AUTENTICAO ANONIMO marquei como: application pool identity e habilitei opcao AUTENTICAO WINDOWS

Randrade
   - 19 ago 2015

Você está desenvolvendo em que? Asp clássico, MVC, Web Forms?

Jefferson
   - 19 ago 2015

Asp Integrated

Coloquei isto

System.Security.Principal.WindowsIdentity.GetCurrent();

System.DirectoryServices.AccountManagement.UserPrincipal currentADUser;
currentADUser = System.DirectoryServices.AccountManagement.UserPrincipal.Current;

MAs nao funciona ao publicar dá esta msg:

Unable to cast object of type 'System.DirectoryServices.AccountManagement.GroupPrincipal' to type 'System.DirectoryServices.AccountManagement.UserPrincipal'.

Randrade
   - 19 ago 2015

Eu costumo usar uma das três formas, veja se alguma lhe atende:

#Código

var userName = System.Web.HttpContext.Current.User.Identity.Name;

var userName = HttpContext.Current.Request.LogonUserIdentity;

var userName = User.Identity.Name;


P.S: Utilize a [tag[tagcod] </> para postar código, assim fica melhor para nossa compreensão.

Jefferson
   - 20 ago 2015

Randrade, funcionam sim os codigos citados acima, porém, nao quero usar um label para pegar o valor.

Gostaria de usar este proprio componete abaixo:

Ele so funciona quando rodo local. Mas quando publico nao aparece nada

#Código


 <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="true">
                    <AnonymousTemplate>
                        [ <a href="~/sair.aspx" id="HeadLoginStatus" runat="server">Sair</a> ]
                    </AnonymousTemplate>
                    <LoggedInTemplate>
                        Bem vindo <span class="bold">
                            <asp:LoginName ID="HeadLoginName"  runat="server" />
                        </span>[
                        <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Sair"
                            LogoutPageUrl="~/sair.aspx" />
                        ]
                    </LoggedInTemplate>
                </asp:LoginView>

Thiago Santana
   - 20 ago 2015

Jeferson, para que o seu componente funcione publicado você deverá efetuar um ajuste no seu webconfig.
Dá uma olhada neste link aqui que existe a configuração do web config como as propriedades necessários do seu
componente LoginView.

http://quickstarts.asp.net/QuickStartv20/util/srcview.aspx?path=~/aspnet/samples/ctrlref/login/LoginViewBasic.src

Espero ter ajudado!

Jefferson
   - 20 ago 2015

No iis 6 funcionava. Nao precisava fazer muita coisa.

Bastava apenas deixa autenticao como WINDOWS no web.config

#Código

<authentication mode="Windows">


E configurar o iis 6

>PROPRIEDADE DE SITE DA WEB PADRAO
(Editar)

> Marcar opcao: ACESSO ANÔNIMO

Thiago Santana
   - 20 ago 2015

Que bom que seu problema foi resolvido! :D

Jefferson
   - 20 ago 2015

Mas no iis7 nao ta funcionando.
NAO TA AUTENTICANDO.

Os valores em qualquer uma das opcoes sao nulos
#Código

]var userName = System.Web.HttpContext.Current.User.Identity.Name; 
var userName = HttpContext.Current.Request.LogonUserIdentity; 
var userName = User.Identity.Name;

Jefferson
   - 20 ago 2015

Nao ta funcionando no iis 7 /7.5

Exibe esta msg:
Unable to cast object of type 'System.DirectoryServices.AccountManagement.GroupPrincipal' to type 'System.DirectoryServices.AccountManagement.UserPrincipal'.

Eu utilizava isto e funcionava no iis 6, mas no iis 7 e 7.5 nao autentica
#Código

  
                 System.DirectoryServices.AccountManagement.UserPrincipal currentADUser;
                 currentADUser = System.DirectoryServices.AccountManagement.UserPrincipal.Current;
                 string emailUsuario = currentADUser.EmailAddress;
                 string Usuario = currentADUser.Name;
                 string NomeCompleto = currentADUser.Name;

Jefferson
   - 20 ago 2015

ASP integrated.

Pra mim nao ta funcionando.

Jefferson
   - 20 ago 2015

Vc configura oq no web.config e iis 7.5 ?

Ja tentei tudo e nao mostra nda qdo publico.

Ja joguei numa label pra ver o q eh passado. Nao mostra o usuario

Jefferson
   - 21 ago 2015

Ja tentei todas opcoes e nao autentica.

Alguem pode me dá uma dica oq possa ta faltando configurar no iis7.5 e web.config?

Davi Amaral
|
MVP
    16 dez 2015

Meu caro! estou exatamente com esse problema!
A questão é que quando você usa o Request.ServerVariables("LOGON_USER") por exemplo, você está pegando o usuário do servidor e não da máquina windows que está acessando!

Será que alguém sabe como pegar o usuário que se logou na máquina?

Jefferson
   - 16 dez 2015

Pois eh,

So funcionou eu substituindo o componente. por uma LABEL

joguei o valor para LABEL exibir

Davi Amaral
|
MVP
    17 dez 2015

Você poderia colocar aqui sua solução?
Acho que terei que fazer algo do tipo também!

Jefferson
   - 18 dez 2015

Davi,

ver se atende:

#Código

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


 protected void Page_Load(object sender, EventArgs e)
 {

  System.Security.Principal.WindowsIdentity.GetCurrent();
  System.DirectoryServices.AccountManagement.UserPrincipal currentADUser;
  currentADUser = System.DirectoryServices.AccountManagement.UserPrincipal.Current;

 //remover o dominio, deixando apenas o usuario
 string Usuario = currentADUser.UserPrincipalName.Remove(currentADUser.Name.Length);
 //remove o usuario e '@'" 
 string dominio = currentADUser.UserPrincipalName.Substring(currentADUser.UserPrincipalName.IndexOf("@")).Replace("@", "");

 lbUserlogado.Text = "Bem vindo " + dominio + "\" + Usuario;

   }



OBS: Necessario add referencia System.DirectoryServices.AccountManagement

Jefferson
   - 18 dez 2015


Citação:
Davi,

ver se atende:

#Código

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


 protected void Page_Load(object sender, EventArgs e)
 {

  System.Security.Principal.WindowsIdentity.GetCurrent();
  System.DirectoryServices.AccountManagement.UserPrincipal currentADUser;
  currentADUser = System.DirectoryServices.AccountManagement.UserPrincipal.Current;

 //remover o dominio, deixando apenas o usuario
 string Usuario = currentADUser.UserPrincipalName.Remove(currentADUser.Name.Length);
 //remove o usuario e '@'" 
 string dominio = currentADUser.UserPrincipalName.Substring(currentADUser.UserPrincipalName.IndexOf("@")).Replace("@", "");

 lbUserlogado.Text = "Bem vindo " + dominio + "\" + Usuario;

   }



OBS: Necessario add referencia System.DirectoryServices.AccountManagement
Citação:
Davi,

ver se atende:

#Código
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


 protected void Page_Load(object sender, EventArgs e)
 {

  System.Security.Principal.WindowsIdentity.GetCurrent();
  System.DirectoryServices.AccountManagement.UserPrincipal currentADUser;
  currentADUser = System.DirectoryServices.AccountManagement.UserPrincipal.Current;

 //remover o dominio, deixando apenas o usuario
 string Usuario = currentADUser.UserPrincipalName.Remove(currentADUser.Name.Length);
 //remove o usuario e '@'" 
 string dominio = currentADUser.UserPrincipalName.Substring(currentADUser.UserPrincipalName.IndexOf("@")).Replace("@", "");

 lbUserlogado.Text = "Bem vindo " + dominio + "\" + Usuario;

   }



OBS: Necessario add referencia System.DirectoryServices.AccountManagement

Davi Amaral
|
MVP
    22 dez 2015

Opa!
Obrigado, mas acabou que resolvemos mudar um pouco o projeto.
O Usuário vai digitar novamente seu dado.

Meu problema é que o sistema estava na nuvem e é em ASP Classico! rsrsrs

Eu queria pegar o usuário logado para fazer uma consulta LDAP na rede do cliente:

Ficou mais ou menos assim:

function AuthenticateUser(Username,Password,Domain)
dim strUser,strPass,strQuery,oConn,cmd,oRS
AuthenticateUser = true
strQuery = "SELECT cn FROM 'LDAP://"&Domain& "' WHERE objectClass='*'"
set oConn = server.CreateObject("ADODB.Connection")
oConn.Provider = "ADsDSOOBJECT"
oConn.properties("User ID") = Username
oConn.properties("Password")= Password
oConn.properties("Encrypt Password") = true
oConn.open "DS Query", Username,Password
set cmd = server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = oConn
cmd.CommandText = strQuery
on error resume next
set oRS = cmd.Execute
if oRS.bof or oRS.eof then
AuthenticateUser = false
else
AuthenticateUser = true
end if
set oRS = nothing
set oConn = nothing
end function