Impossibile ottenere il connettore Tomcat ISAPI IIS per passare l'autenticazione BASIC a Tomcat
-
05-07-2019 - |
Domanda
IIS è stato configurato correttamente per frontare 2 istanze Tomcat utilizzando isapi_redirect.dll. Sta facendo tutto in modo intelligente e siamo stati molto felici. Ora, tuttavia, stiamo utilizzando una delle istanze Tomcat per fornire servizi Web tramite AXIS. Ciò richiede l'autenticazione BASIC e i client .NET non funzionano.
+ I client .NET possono ignorare IIS navigando sul "sito: 8180" e stanno bene
+ I client Java possono colpire IIS e ISAPI li attraversa e si autenticano bene usando basic.
+ I client .NET che colpiscono IIS non riescono ad autenticarsi usando lo stesso unpw.
Fiddler segnala questa sessione:
HTTP / 1.1 401
non autorizzato
Data: mer, 07 gen 2009 14:31:59 GMT
Server: Microsoft-IIS / 6.0
Autenticazione WWW: NTLM
X-Powered-By: ASP.NET
Pragma: nessuna cache
Controllo cache: nessuna cache
Scadenza: mer, 31 dic 1969 19:00:00 EST
WWW-Authenticate: Basic realm = " Daily Control Module "
Content-Type: text / html; charset = utf-8
Lunghezza contenuto: 954
Supporto proxy: autenticazione basata sulla sessione
Avvia ciò che sembra una finestra di dialogo di autenticazione di base, ma invece di chiederci di eseguire l'autenticazione con il modulo di controllo giornaliero, ci chiede di eseguire l'autenticazione sul server Windows. E abbastanza sicuro, il server IIS richiede un'autenticazione NTLM. Se imposto l'intero server per utilizzare Basic Auth, ottengo questo da Fiddler:
HTTP / 1.1 401
non autorizzato
Lunghezza contenuto: 1656
Tipo di contenuto: testo / html
Server: Microsoft-IIS / 6.0
WWW-Authenticate: Basic realm = " nome_server "
X-Powered-By: ASP.NET
Data: mer, 07 gen 2009 15:08:32 GMT
Sigh. Di base, ma ora il Realm di base viene modificato nel server IIS. Quindi, se imposto l'intero server per l'autenticazione con il dominio di base, il modulo di controllo giornaliero, ottengo questo:
HTTP / 1.1 401
non autorizzato
Data: mer, 07 gen 2009 15:11:45 GMT
Server: Microsoft-IIS / 6.0
WWW-Authenticate: Basic realm = " Daily Control Module "
X-Powered-By: ASP.NET
Pragma: nessuna cache
Controllo cache: nessuna cache
Scadenza: mer, 31 dic 1969 19:00:00 EST
WWW-Authenticate: Basic realm = " Daily Control Module "
Content-Type: text / html; charset = utf-8
Lunghezza contenuto: 954
Strano con le doppie intestazioni WWW-Auth, no? Ad ogni modo, l'autenticazione utilizzando lo stesso unpw che funziona direttamente contro Tomcat non riesce, sia che io specifichi il dominio o meno.
Al momento:
+ Anon è spento
+ L'autorizzazione integrata di Windows è disattivata
+ L'autorizzazione di base è attiva, con il dominio configurato come modulo di controllo giornaliero
Grazie per lo sguardo.
Soluzione
Qual è la configurazione della sicurezza della directory?
Sei sicuro che sia abilitata solo l'autenticazione di base?
Altro punto è. Forse a livello di IIS dovresti usare un'autenticazione anonima. E Tomcat si sta occupando dell'implementazione dell'interscambio di autenticazione di base?
L'origine del problema (dall'intestazione che hai pubblicato) è che il client .net riconosce che il sito supporta l'autenticazione ntlm. E prova ad autenticarti con quel protocollo. Il client java sta semplicemente ignorando l'opzione ntlm, quindi utilizza qualsiasi altro protocollo di autenticazione supportato dal sito.
È necessario assicurarsi che l'autenticazione integrata non sia abilitata a livello di sito e file.