Sto tentando di implementare l'autenticazione NTLM su uno dei nostri siti interni e tutto funziona. L'unico pezzo del puzzle che non ho è come prendere le informazioni da NTLM e autenticarsi con Active Directory.Come utilizzare l'autenticazione NTLM con Active Directory
C'è uno good description of NTLM e lo encryption used for the passwords, che ho usato per implementarlo, ma non sono sicuro di come verificare se la password dell'utente è valida.
Sto utilizzando ColdFusion ma una soluzione a questo problema può essere in qualsiasi lingua (Java, Python, PHP, ecc.).
Edit:
Sto usando ColdFusion su RedHat Enterprise Linux. Sfortunatamente non possiamo usare IIS per gestirlo e invece dobbiamo scrivere o usare uno strumento di terze parti per questo.
Aggiornamento-ho ottenuto questo lavoro e qui è quello che ho fatto
sono andato con il JCIFS library from samba.org.
Nota che il metodo seguito funziona solo con NTLMv1 e NON funziona con NTLMv2. Se non si riesce a utilizzare NTLMv1 si può provare Jespa, che supporta NTLMv2, ma non è open source, oppure è possibile utilizzare Kerberos/SPNEGO.
Ecco il mio web.xml:
<web-app>
<display-name>Ntlm</display-name>
<filter>
<filter-name>NtlmHttpFilter</filter-name>
<filter-class>jcifs.http.NtlmHttpFilter</filter-class>
<init-param>
<param-name>jcifs.http.domainController</param-name>
<param-value>dc01.corp.example.com</param-value>
</init-param>
<init-param>
<param-name>jcifs.smb.client.domain</param-name>
<param-value>CORP.EXAMPLE.COM</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>NtlmHttpFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
</web-app>
Ora tutti gli URL /admin/*
richiede l'autenticazione NTLM.