Come conservare le credenziali proxy su macOS in modo che vengano utilizzate dai servizi di sistema?

13

Sto usando macOS Sierra 10.12.6 dietro un proxy NTLM aziendale. Il mio browser e altre applicazioni stanno utilizzando le impostazioni del proxy di sistema, in cui ho salvato il mio nome utente e password per l'autenticazione con il proxy. Funziona bene.

C'è un problema persistente con i servizi di sistema che tentano di accedere alle informazioni su Internet e non vedono di avere accesso alle credenziali del proxy nel mio account utente. Vedo il seguente popup ogni paio di minuti, e qualunque cosa faccia (aggiornando le mie credenziali in Preferenze di Sistema, o premendo "Not Now"), il popup continua a venire ancora e ancora:

Iltestonelpopupriporta:

ProxyAuthenticationRequired

EnterthepasswordfortheHTTPproxyhttp://xxx.xxx.xxx.xxx:yyyy in System Preferences.

Che cosa posso fare per impedire che questo popup venga visualizzato?

Cose che ho provato finora:

  • Aggiorna le mie credenziali in Preferenze di Sistema ( Rete > Avanzate > Proxy )
  • Ho copiato le voci delle credenziali dal mio portachiavi login al portachiavi System , poiché ho letto una raccomandazione per questo in un post di un blog o in una domanda del forum.

Nessuno di questi ha funzionato, ottengo questo popup ogni due minuti, e non sembra esserci un modello quando compare.

Aggiornamento 1:

Non appena inserisco le mie credenziali facendo clic sul pulsante Preferenze di sistema nella finestra di dialogo sopra (che posso forzare ad esempio aprendo Safari e iniziando a digitare un URL nella casella della posizione), due record vengono creati nel portachiavi login , entrambi con contenuti identici:

@ xxx.xxx.xxx.xxx (username) Internet Password Today, 09:10 -- login

Entrambi i record sembrano identici, con lo stesso nome e gli stessi attributi. Entrambi mostrano che l'applicazione che ha richiesto questo è AuthBrokerAgent :

Aggiornamento2:

Hoancheprovatoquestosuggerimento: link , copiando le voci di autenticazione dall'accesso keychain al portachiavi system e quindi riavvia, ma non lo aggiusta. In effetti, la temuta casella "Richiesta autenticazione proxy necessaria" si è presentata di nuovo durante la digitazione di questo ...

Aggiornamento 3:

Ho usato Wireshark per dare un'occhiata al traffico tra la mia macchina e il nostro proxy:

  • Il proxy restituisce con 407 Proxy Authentication Required e Proxy-Authenticate: NTLM , che è in linea con le mie aspettative, poiché il nostro proxy utilizza NTLM.
  • Alcuni esempi che ho visto nel traffico (ad esempio iCloud) quindi restituisco una risposta NTLMSSP_NEGOTIATE .
  • Il proxy torna con una richiesta NTLMSSP_CHALLENGE
  • Il servizio risponde con NTLMSSP_AUTH e il mio nome utente, che deve aver ottenuto da qualche parte.
  • Il proxy alla fine risponde con un 200 Connection established

Per me, questo dimostra che in generale l'autenticazione proxy funziona bene, se il sistema può ottenere il nome utente e il proxy da qualche parte. La domanda rimane come / dove memorizzare il nome utente / password in modo che tutti i servizi di sistema possano trovarlo. Alcuni servizi di sistema (presumo) non hanno alcun mezzo per trovare le credenziali del proxy dove attualmente li sto memorizzando.

    
posta nwinkler 24.07.2017 - 12:55
fonte

3 risposte

9

Questo è probabilmente il comportamento previsto se l'amministratore del sistema / rete ha configurato l'autenticazione della forza proxy che richiede più di uno schema di autenticazione di base.

Dalla pagina Microsoft Gestione dell'autenticazione nella sezione Informazioni sull'autenticazione HTTP :

There are two general types of authentication schemes:

  • Basic authentication scheme, where the user name and password are sent in cleartext to the server.
  • Challenge-response schemes, which allow for a challenge-response format.

Challenge-response schemes enable more secure authentication. If a request requires authentication using a challenge-response scheme, the appropriate status code and Authenticate headers are returned to the client. The client must then to resend the request with a negotiate. The server would return an appropriate status code with a challenge, and the client would then require to resend the request with the proper response to get the requested service.

Se il proxy che stai utilizzando utilizza lo schema autenticazione di base , ciò che è salvato nel tuo portachiavi sarà sufficiente per autenticarti. Se viene utilizzato uno schema challenge response , molto probabilmente dovrai fornire maggiori informazioni - in questo caso - reinserire la tua password - per autenticare; e questo è quello che stai vedendo.

Processo di autenticazione NTLM

Questo è molto più di solo memorizzare credenziali. Il client deve generare una risposta basata su una richiesta generata dal server. Di seguito è riportata una descrizione molto abbreviata del processo di autenticazione dal punto di vista client / server per documentazione di Microsoft

  • The client sends the user name to the server (in plaintext).
  • The server generates a 16-byte random number, called a challenge or nonce, and sends it to the client.
  • The client encrypts this challenge with the hash of the user's password and returns the result to the server. This is called the response.
  • The server sends the following three items to the domain controller:

    • User name
    • Challenge sent to the client
    • Response received from the client
  • The DC validates the encrypted challenge and response. If authenticated, access is granted.

Il terzo passaggio sopra, richiede al client di cancellare un numero casuale ottenuto dal server. Questo significa intrinsecamente che non c'è nulla da memorizzare sul tuo client macOS.

Al minimo, è necessario essere iscritti al dominio di Active Directory. Ciò significa che hai bisogno del supporto Kerberos abilitato e configurato correttamente per la tua organizzazione specifica.

C'è una frase chiave nel documento "Gestione autenticazione" che ho collegato sopra:

If authentication is required, the INTERNET_FLAG_KEEP_CONNECTION flag should be used in the call to HttpOpenRequest. The INTERNET_FLAG_KEEP_CONNECTION flag is required for NTLM and other types of authentication in order to maintain the connection while completing the authentication process. If the connection is not maintained, the authentication process must be restarted with the proxy or server.

(Enfasi mia)

In base ai sintomi presentati, sembra che l'organizzazione richieda l'autenticazione al proxy; il tuo nome utente / password sono validi, ma continua a (ri) chiedere l'autenticazione. Probabilmente è perché stai perdendo lo stato della connessione e devi fare tutto da capo. Che sottolinea ulteriormente il punto ....

Per risolvere questo problema, dovrai contattare l'amministratore di rete per assisterti nei problemi di autenticazione.

    
risposta data 14.08.2017 - 18:14
fonte
1

tramite l'autorizzazione dell'impostazione di modifica dell'app della catena di chiavi

    
risposta data 30.01.2018 - 18:14
fonte
-2

Esegui il seguente comando da Console.app :

networksetup -setwebproxy "Your Interface Name" "web proxy hostname or IP" 
8080 on username password

Ti verrà chiesto dell'accesso con portachiavi. Accetta di aggiungere il record al portachiavi e avrai accesso senza password per tutto il tempo in cui il tuo portachiavi è aperto.

    
risposta data 14.08.2017 - 16:29
fonte

Leggi altre domande sui tag