Autenticação do Sistema Operacional Windows(IIS) no Intraweb

Delphi

21/03/2005

Prezados senhores, depois do sufoco que passei gostaria de compartilhar o conhecimento que adquiri. Não achei essas informaçãos em lugar algum. Vou passar uma receita de bolo, mas outros caminhos podem ser usados.

Para autenticar automaticamente pelo Domínio do Windows, é necessário usar o servidor Web IIS. Desconheço essa funcionalidade no Apache.
1- É preciso habilitar essa função. Vá em Control Pane/Administrative Tools/Internet Information Services (se não tiver essa opção, tem que instalar o IIS antes.)

2- Selecione o serviço ´Default Web Site´ com o botão direito do mouse e vá em propriedades. Na aba ´Directory Security´, clique no botão ´Edit´ de ´Anonymous access and authentication control´.

3- Marque a opção ´Integrated Windows authentication´. Essa opção fará que o IE consiga se entender com o IIS. Porém, (pelo menos eu não consegui), não funciona com outros navegadores (testei o Firefox e o Opera, ambos no Windows e no Linux). Para isso funcionar, nessa mesma tela é preciso habilitar a opção ´Basic authentication´ também. Porém, como o próprio texto diz, a senha é enviada sem criptografia pela rede, um risco de segurança. Porém, vc consegue usar no Linux o sistema desejado (a minha máquina é). É questão de assumir o risco ou não. Eu ainda não decidi. :-)

Até aí é fácil e de conhecimento público. O seu programa Delphi feito no Intraweb no modo ISAPI só aceitará clientes que o IIS deixe passar. Mas como pegar o nome do usuário que o IIS autenticou?

4 - É preciso usar uma variável do ASP, que funciona no Delphi também. No form da sua aplicação, execute o seguinte comando:
WebApplication.Request.GetFieldByName(´LOGON_USER´)
Ele retornará o nome do usuário do seu cliente web. Gostaria de tentar esse comando no ServerController, mas ainda não consegui.

Pronto, é isso. Agora na sua rede Windows os usuários não precisam informar usuário/senha para usar o sistema. Acredito que tenha um comando parecido nas outras tecnologias web do delphi (webSnap, etc). É só chamar a variável ´LOGON_USER´.


Jeanlavalle

Jeanlavalle

Curtidas 0
POSTAR