Gostaria de integrar a autenticação do scriptcase com active diretory (LDAP), peço ajuda em como proceder, obrigado
Ertroi,
Existem algumas codificações mais e outras menos elaboradas, no entanto adaptei um exemplo simples para servir de base para você ok ,
1- Primeiro ‘descomente’ a linha do seu php.ini e reinicie o apache :
;extension=php_ldap.dll
2 - Crie a função
//-------------------------------------------------------------
// Função: valida_ldap
// Uso: valida_ldap( ‘servidor’, ‘dominio\usuário’, ‘senha’)
//-------------------------------------------------------------
function valida_ldap($srv, $usr, $pwd) {
$ldap_server = $srv;
$auth_user = $usr;
$auth_pass = $pwd;
// Tenta se conectar com o servidor
if (!($connect = @ldap_connect($ldap_server))) {
return FALSE; // Erro na conexão com o servidor
}
// Tenta autenticar no servidor
if (!($bind = @ldap_bind($connect, $auth_user, $auth_pass))) {
return FALSE; // Autenticação OK
} else {
return TRUE; // Falha na Autenticação
}
ldap_unbind($connect);
}
Embora não tenha testado em meu ambiente de produção, nos testes com a versão 5.01.0011 do SC, a função funcionou como esperado
Mais detalhes sobre a documentação PHP LDAP Functions pode ser encontrada em http://www.php.net/manual/en/ref.ldap.php
Espoero ter ajudado
William Scardua
Mas como eu crio essa função la no scriptcase? Pode me ajudar no processo? Já tenho a aplicação de controle, quero tipo que ele autentique com a senha do ad o usuario que esta cadastrado na base para acesso, pode me mandar um exemplo?
voce pode criar biblioteca … ou colocar num evento do controle(login) e chamar no validate …
Pessoal coloquei da forma abaixo, mas continua dando o erro de credencial invalida
$var_login = sc_sql_injection({login});
$var_password = sc_sql_injection({password});
$ldap[‘user’] = $var_login;
$ldap[‘pass’] = $var_password;
$ldap[‘host’] = ‘10.51.1.2’;
$ldap[‘port’] = 389;
$ldap[‘dn’] = ‘uid=’.$ldap[‘user’].’@ctis.local’;
$ldap[‘base’] = ‘DC=ctis,DC=local’;
// Conectando ao LDAP
$ldap[‘conn’] = ldap_connect( $ldap[‘host’], $ldap[‘port’] );
ldap_set_option($ldap[‘conn’], LDAP_OPT_PROTOCOL_VERSION, 3);
$ldap[‘bind’] = ldap_bind ($ldap[‘conn’], $ldap[‘dn’],$ldap[‘pass’] );;
if ($ldap['bind'])
{
$sm_global_login = {login};
sc_set_global($sm_global_login);
sc_lookup(ds_user_app, "select dbo.SCRIPTGROUPAPL.CODIGOAPL from dbo.SCRIPTGROUPAPL inner join dbo.SCRIPTGROUPUSER on dbo.SCRIPTGROUPAPL.CODIGOGRUPO = dbo.SCRIPTGROUPUSER.CODIGOGRUPO where dbo.SCRIPTGROUPUSER.CODIGOUSER = '{login}' ");
if ({ds_user_app} != false)
{
for($i = 0; $i < count({ds_user_app}); $i++)
{
sc_apl_status({ds_user_app[$i][0]}, 'on');
}
}
sc_redir('detec');
}
else
{
sc_error_message(“Acesso negado !”);
}
Common mistake that’s no good.