Desidero utilizzare WS .Net da IBM WebSphere.JAX-WS Client IBM che utilizza WS .Net con autenticazione Active Directory (NTLM)
Ho creato un client WS con un'implementazione JAX-WS IBM che utilizza WS .Net su IIS. Il client è su SUSE e l'autenticazione è NTLM con Active Directory di Windows Server 2003.
Se il client viene eseguito in linea di comando l'attuazione chiamate java.net.Authenticator per ottenere le credenziali e la richiesta è successo.
Se il client viene eseguito all'interno RAD l'Authenticator non viene chiamato e non riesce con 401.
Se il client viene eseguito all'interno di WebSphere l'Authenticator non viene chiamato e non riesce con 401.
Se creo una HttpConnection direttamente sull'URL WS .Net, viene chiamato l'Autenticatore e la richiesta è riuscita.
Se invece dell'implementazione JAX-WS IBM utilizzo Axis2 (direttamente, non implementazione JAX-WS IBM Axis2), potrei passare al client Axis2 l'oggetto Authenticator e la richiesta è riuscita. Funziona solo per il protocollo NTLM con Windows Server 2003. Quando eseguiamo la migrazione a Windows Server 2008 il protocollo di autenticazione è NTLMv2 (tutti si spostano su NTLMv2 a causa di problemi di sicurezza con NTLM) e la richiesta non riesce perché NTLMv2 non è supportato dal client HTTP 3. X che è la dipendenza di Axis2. E per qualche tempo non migreranno.
Se uso altri Implementazione di JAX-WS di IBM perdo l'amministrazione console e la lettura automatica delle annotazioni, oltre a perdere il sostegno di IBM.
Domande
Io non capisco perché all'interno di RAD esso non ha funzionato, è lo stesso programma che funziona da linea di comando.
Come si fa a rendere l'implementazione IBM JAX-WS autenticata con il supporto del protocollo NTLMv2 con credenziali specifiche? (java.net.Authenticator fornisce questo e dovrebbe essere chiamato ... non lo è)
È il modo per rendere l'implementazione di IBM JAX-WS un altro client HTTP rispetto a quello standard?
Anche l'implementazione IBM JVM fornisce l'autenticazione NTLM (questo è il motivo per cui la riga di comando e le esecuzioni dirette di HttpConnection funzionano) quindi non capisco perché non lo usano per lo stack WS IBM.
Punti di forza
C'è un buon modo per fornire capacità bidirezionale di consumare WS con l'autenticazione ActiveDirectory?
commento
Primavera WS usa HttpClient 4.X che supporta NTLMv2 autenticazione, ma ho bisogno di un'implementazione di JAX-WS e dovrebbe essere quello di IBM. IBM JAX-WS sembra supportare solo l'AUTH di base. Non capisco come l'interoperabilità di Microsoft WS non sia importante per IBM.
Riferimenti
Authenticator conf:
https://stackoverflow.com/a/5994706/14811
Grazie in anticipo!
Non scelgo di andare su NTLMv2, la società va a. WS-Security è uno strato sul protocollo di trasporto. NTLMv2 funziona nel livello di trasporto, quindi non posso andare con WS-Security. Kerberos è una scelta migliore su NTLMv2 ma non consente il bilanciamento del carico tramite DNS perché è resistente all'attacco Man-In-The-Middle. In questo caso l'IP di destinazione potrebbe cambiare. NTLMv2 è sicuro, non abbiamo bisogno di Kerberos. Ho testato alcuni stack WS (Axis2, IBM JAX-WS, Spring WS) con la strategia Authenticator e tutti loro lo evitano. Ma il documento Authenticator dice che qualsiasi accesso alla rete dovrebbe cercare le credenziali al suo interno. –
Informazioni sull'autenticatore. Ho creato un piccolo programma che imposta un Authenticator e chiama un WS. Se eseguo questo programma all'interno di RAD, fallisce, se lo si esegue dalla riga di comando chiama Authenticator per ottenere le credenziali e funziona bene. Non so perché. –