problema ao logar com usuario ad

29/11/2017

0

Olá,

Fiz uma aplicaçpão web em asp.net c#


Utilizo usuario AD para logar. Funciona normalmente em minha maquina. E publiquei em um servidor tambem funcionou usando iis7

Mas nao ta funcionando em um servidor que tem iis8. Na verdade nao sei se o problema eh iis mesmo.
Mas nao loga, so loga se deixar usuario com permissao de Administrator.

Uso esta classe para autenticao

  public class Impersonator
    {
        private WindowsImpersonationContext _impersonatedUser = null;
        private IntPtr _userHandle;
        public bool Logado { get; set; }

        public Impersonator(string Login, string Senha, string dominio)
        {
            try
            {
                Logado = false;
                //System.DirectoryServices.AccountManagement.UserPrincipal currentADUser;
                //currentADUser = System.DirectoryServices.AccountManagement.UserPrincipal.Current;
                //string emailUsuario = currentADUser.EmailAddress;
                //string Usuario = currentADUser.Name;
                //string NomeCompleto = currentADUser.Name;

                _userHandle = new IntPtr(0);
                string user = Login;                              
                string password = Senha;
                Logado = LogonUser(user, dominio, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref _userHandle);
                if (!Logado)
                    throw new ApplicationException("Could not impersonate user");

                if (Logado)
                {
                    WindowsIdentity newId = new WindowsIdentity(_userHandle);
                    _impersonatedUser = newId.Impersonate();
                                        
                }
            }
            catch (Exception) { }
        }

        #region IDisposable Members
        public void Dispose()
        {
            if (_impersonatedUser != null)
            {
                _impersonatedUser.Undo();
                CloseHandle(_userHandle);
            }
        }
        #endregion
        #region Interop imports/constants
        public const int LOGON32_LOGON_INTERACTIVE = 2;
        public const int LOGON32_LOGON_SERVICE = 3;
        public const int LOGON32_PROVIDER_DEFAULT = 0;
        [DllImport("advapi32.dll", CharSet = CharSet.Auto)]
        public static extern bool LogonUser(String lpszUserName, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
        public extern static bool CloseHandle(IntPtr handle);
        #endregion
    }



ja fiz um teste adicionando isto no web.config, mas não funcionou

 <identity impersonate="true" />
Jefferson

Jefferson

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar