+1

Identificação Automática de Usuários Usando Radius

criado por Wagner Quedi Rosa em 19/07/2002 7:33pm
Esse é o item que será usado e deverá ser substituído pelos dados do seu provedor:

1 - 200.111.222 - Classe do IP do Servidor (Será usado para saber se é cliente ou não)

O Que é preciso para desenvolver?
1 - Um Servidor Linux
2 - Um WebServer Apache com suporte a PHP
3 - Um Servidor de Autenticação de usuários Radius

Antes de Começar:

Em alguns servidores é necessário mudar as propriedades do radwho então aconselho dar um chmod 777 /usr/bin/radwho
e às vezes é necessário fazer o mesmo com o arquivo /etc/raddb/naslist

Como Preparar (O Script):

Na página onde se deseja identificar o cliente adicione o seguinte script que está comentado:

<?php
$host_a = $REMOTE_ADDR; //captura o ip do visitante
$login_a = exec("/usr/bin/radwho |grep $host_a");
$login_a = trim(substr($login_a,0,strpos($login_a," "))); //captura o login do cliente
$classe = substr($host_a,0,11);
if ($classe=="200.111.222") { //coloque aqui sua classe de ip
    echo "Ola " . $login_a; //mostra o login do usuário.
} else {
    echo "Ola Visitante"; // mostra somente "ola visitante"
}
?>

Se você quiser enfeitar mais, aqui vão mais algumas dicas:

1 - Você pode manter uma tabela no seu MySQL contendo as informações (nome, login), e se o cliente for identificado ele faz uma chamada ao banco de dados e pega o nome completo do cliente e mostra o "Olá Wagner Quedi Rosa" ao invés de somente "Olá wagner".

2 - Você pode também salvar o login ou/e o nome do cliente em Session e carregar em qualquer parte do site, não precisando executar essa rotina em todas as páginas. Para isso adicione as seguintes linhas no inicio das páginas:

<?php
session_start();
session_register('login_a'); //registra o login do cliente
?>

3 - Se seu site tem área restrita, disponíveis somente para clientes, você pode liberar isso se o cliente for identificado...

Bom, são varias as utilidades...

Espero ter ajudado em algo esta grande comunidade de programadores.

Comentários:

Mostrando 1 - 10 de 11 comentários
José Walter disse:
Alguém sabe como faço p identificar com script PHP o usuário da rede (intranet, logon NT) que está logado no pc ora em uso? Assim, identificado, não precisarei fazer uma tela de login (PHP). O sistema desenvolvido em PHP reconhecerá o usuário d rede e permitirá seu acesso.
02/10/2006 2:45pm (~17 anos atrás)

Como faria a autenticação pelo RADIUS sendo que meu RADIUS está em um servidor NT??
Gostaria de uma ajuda..
Agradeço desde já!!
13/08/2003 1:19pm (~21 anos atrás)

Evandro Silva disse:
Como colocar mais de uma classe ip, para filtrar, e mostrar o nome de usuário, possui várias classes C
08/05/2003 2:17pm (~21 anos atrás)

Evandro Silva disse:
Caro Wagner

Muito bom o seu script, testei e funcionou legal, mas por exemplo tenho um usuário que o user dele é eustaquio.fila aparece no script apenas eustaquio. , gostaria que voce me desse uma dicas de como buscar o nome completo do cara no banco de dados, esta informação eu já tenho gravada no banco.
08/05/2003 2:14pm (~21 anos atrás)

pode até aumentar a segurança, mas neste caso o que pode ser feito de malicioso?
29/10/2002 1:13pm (~21 anos atrás)

Tente mudar para isso ...

<?php
$ip_classe="200.111.222"; //incica a base

$host_a = $REMOTE_ADDR; //captura o ip do visitante
$login_a = exec("/usr/bin/radwho |grep $host_a");
$login_a = trim(substr($login_a,0,strpos($login_a," "))); //captura o login do cliente
$classe = substr($host_a,0,strlen($ip_classe)); //pega a base do ip
if ($classe==$ip_classe) {
echo "Ola " . $login_a; //mostra o login do usuário.
} else {
echo "Ola Visitante"; // mostra somente "ola visitante"
}
?>

seu codigo naum tava funcioando em alguns servidores pois algum apresentam a base do Ip de forma diferente (200.123.52.145)...hi a dava pau... mas com esse naum dá naum

falows

Pangole
pangole@bol.com.br
22/09/2002 6:42am (~21 anos atrás)

DESCULPEM ... ESQUECI DE COLOCAR NO ARTIGO A LINHA

<?
$classe = substr($host_a,0,11);
?>

AI O PROBLEMA ACABA...
:)
29/07/2002 10:08am (~22 anos atrás)

Retomando o assunto acima ele só funciona para os IPs que eu coloco assim:


} else ($host_a=="200.203.245.7")
{
echo "Mensagem";

} else ($host_a=="200.203.245.19")
{....... e etc...

se eu colocar apenas a classe 200.203.245
e deixar imprimir o conteúdo da váriavel $login_a ele passa batido e trata como visitante. Determinar os IPs é uma boa idéia para os assinantes wirelles do provedor e p/ o meu IP "caseiro" que é fixo, para os demais assinantes que adquirem IP dinâmico não esta resolvendo, ele os trata a todos como visitantes... acho que assim fui mais claro... se puder comentar o que está acontecendo ficaria grato...
Atenciosamente
Alex.
29/07/2002 12:30am (~22 anos atrás)

Olá Wagner,
Testei o script aqui no provedor e não deu certo. Ele não "entende" a classe de ip. Tentei carregar em array e também não deu certo. Só funciona para os IPs que determino... o que pode estar acontecendo?

OBS.: não foi necessária nenhuma alteração nas propriedades do radwho...
27/07/2002 9:24pm (~22 anos atrás)

Valeu a dica...
23/07/2002 9:30am (~22 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)