Estava com o mesmo dilema aqui e resolvi de uma maneira que ficou muito boa.
Meus problemas com isso:
Problema 1: Applets dependem de configuração local de brownser, versão de jre, configurações de permissionamento de acesso e por aí vai, ainda mais quando a necessidade de acesso é relativa a propriedades restritas do SO.
Problema 2: Como obter isso sem usar applet ?
Problema 3: Obtido, como permissionar os acessos dentro da aplicação ?
Bom, a partir do código do link postado aqui neste tópico - http://www.rgagnon.com/javadetails/java-0441.html -, fiz um servlet para obter o login de rede. Já que já está logado na rede, não preciso mais pedir senha, menos 1 problema.
Para acesso às funcionalidades do sistema, cadastrei o permissionamento interno do usuário, passo para o sistema o usuário e “shazam!” abre o sistema sem necessidade de login.
No cadastro deste usuário tenho um flag que diz se ele é de rede ou não e se o login deste é automático, para que possa dar acesso ao sistema a outro tipo de usuários (fora de rede, administrador, etc)
Para obter mais informações do usuário na rede, como displayname, memberof, email, etc, criei no AD da empresa uma conta de serviço, esta fica configurada no server.xml de maneira fixa, e só serve para leitura. Com essa conta faço minhas pesquisas e trago os dados adicionais do usuário de rede logado, mole-mole… Me dando ao luxo de vincular grupos do AD (LDAP) com permissionamento destes grupos dentro do sistema, quando necessário, como informações restritas a diretores ou membros de grupos de auditoria e outros. Neste caso, tomei como base para meu código, outro post aqui do guj - http://www.guj.com.br/posts/list/125807.java - e no filtro coloco (&(objectClass=user)(anr=)).
Ficou uma solução muito bacana, elegante e bem funcional. Espero que te ajude ou a qualquer outro que precise disto no futuro.
Abs.