Ir para o conteúdo
JoaoVM

Login + Password Windows

Mensagens Recomendadas

JoaoVM

Boas,

Tenho uma duvida sobre como fazer login e ir buscar a password do windows, ou seja, quero fazer com que os utilizadores não tenham que ter que ter duas passwords, por exemplo, ter a password do windows e quando fizer o login da aplicação, fazer uma comparação do tipo, se PWRD_INSERIDA = PWRD_WIN => LOGIN_EFETUADO.

Outra dúvida é se só posso fazer isto através de LDAP ou dá para fazer sem isto?

Cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Outra dúvida é se só posso fazer isto através de LDAP ou dá para fazer sem isto?

existem muito fracas soluções de .Net/PHP para se poder fazer isso de outra forma

terás mesmo de fazer por LDAP


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

O php funciona no servidor. O cliente está no seu computador.

Como esperas misturar os 2?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

é assim o objetivo final não é ficar tudo no mesmo computador, o objetivo para agora é fazer uma simulação do servidor e meter a funcionar o sistema de autenticação por ldap. Tens ideias que possas partilhar comigo? tenho um exemplo que utiliza o http://adldap.sourceforge.net/, mas ainda não coloquei a funcionar. se tiveres ideias ou algum conselho ou outra coisa que me possas ajudar agradecia.

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

O phpBB tem um que funciona bem. Podes dar uma vista de olhos como ele faz.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

hum..obrigado, vou experimentar ;)

só uma coisa mais, este site não é para colocar online, é para ficar simplesmente através da rede da empresa e trabalhar a partir da mesma..eles trabalham com o WAMP nas suas aplicações já desenvolvidas, tem algum contra efeito?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Não. Mas as regras do que mencionei mantém-se.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

Utilizei adLdap e coloquei tudo a funcionar e rola bem, acabei por não colocar um a fazer de servidor e cliente no mesmo pc, mas rola no servidor da empresa que é o que interessa ;) Obrigado

Editado por JoaoVM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
taviroquai

Eu uso PHP + LDAP para autenticar utilizadores em servidores WS2003/8 e funciona muito bem.

Basta instalares a extensão LDAP no PHP. Acho que já tinha apresentado algo sobre isso aqui no forum mas já não me lembro... se encontrar coloco aqui.

Encontrei uma classe que tinha feito para isso... é um pouco grande... Este editor é uma pain... copiei do netbeans ficou assim... :confused:

Basicamente precisas dizer em que OU queres procurar. Pergunta ao teu sysadmin como está organizada a OU dos users.


<?php

class Ldap {

private $conn;
private $server = '';
private $base = '';
public $log = array();

public function  __construct($server) {
$this->server = $server;
}

/**
* Define an OU base
* @param string $ou
*/
public function setBase($ou) {
$this->log[] = "Definida base ou = ".$ou;
$this->base = $ou;
}

/**
*
* @param string $server
* @return boolean
*/
public function connect() {
$this->conn = @ldap_connect( $this->server );
if ($this->conn) $this->log[] = "Ready to connect to ".$this->server;
return $this->conn;
}

/**
* End ldap connection
* @return boolean
*/
public function disconnect() {
$this->log[] = "Disconnected from server.";
return ldap_close($this->conn);
}

/**
*
* @param string $username
* @param string $password
* @param resource $conn
* @return boolean
*/
public function auth( $username, $password, $prefix = "" ){
$username = $prefix.$username;
if (empty($username) || empty($password)) $anonymn = 'anonymn'; else $anonymn = '';
if ( @ldap_bind( $this->conn, utf8_encode($username), $password ) )
{
//ldap_unbind( $conn );
$this->log[] = "$anonymn auth succeded.";
return true;
}
else
{
$this->log[] = "Auth failed.";
return false;
}
}

/**
* Filter example by login that starts with 'ma': (sAMAccountName=ma*)
* LDAP: http://www.kouti.com/tables/userattributes.htm
*
* @param string $filter
* @param resource $conn
* @param string $ou
* @return array
*/
public function find($filter, $ou = "ou=PRES", $filter2 = array()) {
$ou .= $this->base;
$result = @ldap_search($this->conn, $ou, $filter, $filter2);
if ($result) {
// get entry data as array
$data = ldap_get_entries($this->conn, $result);
$this->log[] = "Search returned ".count($data)." results";
return $data;
}
else
{
return array();
}
}

/**
* Returns OUs list found by filter
* @param string $filter1
* @param string $ou
* @param string $filter2
* @return array
*/
public function findAll($filter1, $ou = "ou=PRES", $filter2 = array("ou")) {
$ou .= $this->base;
$result = @ldap_list($this->conn, $ou, $filter1, $filter2);
if ($result) {
// get entry data as array
$data = ldap_get_entries($this->conn, $result);
$this->log[] = "List returned ".count($data)." results";
foreach ($data as $item) {

if (count($filter2) > 1) {
$array = array();
foreach ($filter2 as $attr) {
if (!empty($item[$attr][0])) $array[$attr] =  $item[$attr][0];
}
}
else {
foreach ($filter2 as $attr) {
if (!empty($item[$attr][0])) $array =  $item[$attr][0];
}
}

$list[] = $array;
//$list[] = $item;
}
array_shift($list);
return $list;
}
else
{
return array();
}
}

/**
* Returns a list of SAMs found by filter
* @param string $filter
* @param string $ou
* @param string $filter2
* @return array
*/
public function findSAMs($filter, $ou = "ou=PRES", $filter2 = array("sAMAccountName", "cn")) {
$ou .= $this->base;
$list = array();
$result = @ldap_search($this->conn, $ou, "sAMAccountName=".$filter, $filter2);
if ($result) {
// get entry data as array
$data = ldap_get_entries($this->conn, $result);
$this->log[] = "The search for SAMs by samaccountname returned ".count($data)." results";
foreach ($data as $item) {
if (!is_null($item['samaccountname'][0])) $list[] = $item['samaccountname'][0];
}
}
$result = @ldap_search($this->conn, $ou, "cn=".$filter, $filter2);
if ($result) {
// get entry data as array
$data = ldap_get_entries($this->conn, $result);
$this->log[] = "The search for SAMs by cn returned ".count($data)." results";
foreach ($data as $item) {
if (!is_null($item['cn'][0])) $list[] = utf8_encode ($item['cn'][0]);
}
}
return $list;

}

/**
* Returns a list of users childs of (departament, division, service)
* @param string $departamento
* @param string $divisao
* @param string $servico
* @param string $ou
* @return array
*/
public function users($q = "*", $departamento = NULL, $divisao = NULL, $servico = NULL, $ou = 'ou=PRES') {
if (isset($servico)) return $this->findSAMs($q, "ou=$servico,ou=$divisao,ou=$departamento,".$ou);
if (isset($divisao)) return $this->findSAMs($q, "ou=$divisao,ou=$departamento,".$ou);
if (isset($departamento)) return $this->findSAMs($q, "ou=$departamento,".$ou);
return $this->findSAMs($q, $ou);
}

/**
* Returns a multi array with all SAM attributes.
* @param string $username
* @return array
*/
public function userDetails($username) {
return $this->find("sAMAccountName=".$username);
}

/**
* Devolve um array multidimensional com todos os atributos da OU indicada.
* @param string $ou
* @return array
*/
public function organDetails($ou) {
return $this->find("ou=".$ou);
}

}

Editado por taviroquai

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

Desde já obrigado taviroquai, isto é algo parecido com o que tenho, o adLdap é bastante parecido..eles já dão tudo feito e o que tenho que fazer é adaptar ao meu código, já está a funcionar e dá muito jeito e acho bastante seguro também..como já tenho a funcionar não vou alterar agora, mas pode haver pessoal com mais dúvidas sobre este assunto e este tópico acho que é muito importante..obrigado a todos.

Abraço

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.