none
Validar usuário e senha no Active Directory com ASP RRS feed

  • Pergunta

  • Bom pessoal, estou com dificuldade em validar um usuário no Ad, preciso chamar um ASP por uma função JavaScript para que seja validado o usuário e senha.

    segue o meu código:

    Código em Html para a textarea para usuário e senha ->

    span class="style3">&nbsp;Usuário: </span> <br>
    <input id="useridValida" name="useridValida" class="txtarea" type="text" value="<%=Idlogquery("id_usuario")%>" style="width:150px" /> <br><br>
    <span class="style3">&nbsp;Senha:</span> <br>
    <input id="passwdValida" name="passwdValida" class="txtarea" type="password" value="" style="width:150px" /> <br><br>

    Botão que chama a função JavaScript ->

    <div style=";top:80%;left:16%;float:left" id="divBotoes" >
    <input type=submit value="Validar" id="validar" onclick="validarLogin();" />
    </div>

    Função Java Script ->

    function validarLogin(){


    var useridValida = document.getElementById("useridValida").value;
    var passwdValida = document.getElementById("passwdValida").value;

    if ((useridValida == '') && (passwdValida == '')) {
    alert("Por favor informe seu login e senha de acesso ao sistema.");
    return false;
    }

    if (useridValida == '') {
    alert("Por favor informe seu login de acesso ao sistema.");
    return false;
    }

    if (passwdValida == '') {
    alert("por favor informe sua senha de acesso ao sistema.");
    return false;
    }


    Estou chamando o asp por esse codigo a baixo, mas não esta dando certo -->
    window.location.href("../tramitacao/login_valida_teste.asp?useridValida=" + useridValida + "&passwdValida=" + passwdValida)



    }
    function Alerta(tipo){
    switch (tipo){
    case 'invalid':
    alert("Login ou senha Invalido");
    break;

    case 'block':
    alert("Usuário bloqueado, favor entre em contato com a unidade de Documentos.");
    break;
    }
    }


    Programa Asp -->


    <head>
    <meta http-equiv="Content-Type" content="text/html;" />
    <%

    ' User levels
    Const ewAllowAdd = 1
    Const ewAllowDelete = 2
    Const ewAllowEdit = 4
    Const ewAllowView = 8
    Const ewAllowList = 8
    Const ewAllowSearch = 8
    Const ewAllowAdmin = 16
    dim pagina
    dim sUserId
    dim sPassWd
    dim bValidPwd
    dim sSql
    dim rs
    dim usuario, login, ip, data_hora
    dim caracter
    dim i
    dim teste

    dim strDomainUser, strPassword, strDomain, objRootDSE, objDSObj, objAuth

    'pagina=request.QueryString("pagina")

    ' Setup variables
    sUserId = request("useridValida")
    sPassWd = request("passwdValida")

    sSql = "SELECT * FROM VW_ICO_COLABORADOR_FULL WHERE SG_SISTEMA='DOC' AND ID_USUARIO = '" & trim(sUserId) & "' "
    response.Write(sSql)
    response.Write("senha= "&sPassWd)
    response.End
    Set rs = retornaRs(sSql)


    'Validação do usuário no Active Directory
    strDomainUser = sUserId
    strPassword = sPassWd
    strDomain = "APEX"
    ' on error resume next
    ' Set objDSObj = GetObject("LDAP:")
    ' Set objAuth = objDSObj.OpenDSObject("LDAP://ou=APEX-users,dc=apex,dc=brasil", strDomain & "\" & strDomainUser, strPassword, 1)

    dim strComputer, strNameSpace, strUser, objWbemLocator, objDSO, objComputer

    strUser = strDomainUser


    on error resume next
    Set objDSObj = GetObject("LDAP:")
    Set objComputer = objDSObj.OpenDSObject("LDAP://ldap.apex.brasil/OU=APEX-users,DC=APEX,DC=brasil", strUser, strPassword, 1)

    response.write("erro="&Err.number)
    responde.end
    If Err.number = -2147023570 then

    response.redirect("login.asp?login=invalid")
    response.End
    elseif err.number = -2147016672 then
    response.redirect("login.asp?login=invalid")
    response.End
    elseif err.number = -2147463168 then
    response.redirect("login.asp?login=invalid")
    response.End
    elseif err.number <> 0 then
    response.Write err.number & " - " & err.Description
    response.End
    End If


    if err.number = 0 then
    If not rs.Eof Then
    if rs("ID_SITUACAO") = "3" then 'usuário bloqueado
    response.Redirect("/saida/usuarioBloqueado.asp")
    elseif rs("ID_SITUACAO") = "2" then ' usuário não está desativado
    response.Redirect("/saida/usuarioDesativado.asp")
    End If
    End If
    else
    response.redirect("login.asp?login=invalid")
    End If

    %>
    </head>
    </html>
    segunda-feira, 1 de fevereiro de 2016 12:18

Todas as Respostas

  • Qual erro está ocorrendo? No arquivo Programa.asp, comente a linha "on error resume next" e veja a mensagem de erro que está retornando.

    Passar login e senha por querystring com javascript, não é uma boa prática. Recomendo que você crie um form de validação e faça um POST para a página asp que irá proceder com a autenticação.

    segunda-feira, 22 de fevereiro de 2016 13:59
  • Essa classe resolve seu problema:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Runtime.InteropServices;
    using System.DirectoryServices.AccountManagement;
    
    namespace ConsoleApplication1
    {
    
        public struct Credentials
        {
            public string Username;
            public string Password;
        }
    
        public class Domain_Authentication
        {
            public Credentials Credentials;
            public string Domain;
    
            public Domain_Authentication(string Username, string Password, string SDomain)
            {
                Credentials.Username = Username;
                Credentials.Password = Password;
                Domain = SDomain;
            }
    
            public bool IsValid()
            {
                using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, Domain))
                {
                    // validate the credentials
                    return pc.ValidateCredentials(Credentials.Username, Credentials.Password);
                }
            }
        }
    
        class Program
        {
            
            static void Main(string[] args)
            {
                Domain_Authentication da = new Domain_Authentication("usuario", "senha", "dominio");
                if(da.IsValid())
                    Console.WriteLine("Login válido...");
                else
                    Console.WriteLine("Login inválido...");
    
                Console.ReadKey();
            }
        }
    }


    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985

    segunda-feira, 22 de fevereiro de 2016 16:32