¿Cómo almacenar credenciales de proxy en macOS para que las utilicen los servicios del sistema?

Uso macOS Sierra 10.12.6 detrás de un proxy NTLM corporativo. Mi navegador y otras aplicaciones utilizan la configuración del proxy del sistema, en la que guardé mi nombre de usuario y contraseña para autenticarme con el proxy. Esto está funcionando bien.

Hay un problema persistente con los servicios del sistema que intentan acceder a la información en Internet y no ven tener acceso a las credenciales del proxy en mi cuenta de usuario. Veo la siguiente ventana emergente cada dos minutos, y haga lo que haga (actualizar mis credenciales en Preferencias del sistema o presionar "Ahora no"), la ventana emergente sigue apareciendo una y otra vez:

Se requiere autenticación proxy

El texto en la ventana emergente dice:

Se requiere autenticación proxy

Ingrese la contraseña para el proxy HTTP http://xxx.xxx.xxx.xxx:yyyy en Preferencias del Sistema.

¿Qué puedo hacer para que deje de aparecer esta ventana emergente?

Cosas que he probado hasta ahora:

  • Actualicé mis credenciales en Preferencias del Sistema ( Red > Avanzado > Proxy )
  • Copié las entradas de credenciales de mi llavero de inicio de sesión al llavero del sistema , ya que leí una recomendación para eso en una publicación de blog o pregunta en un foro.

Ninguno de estos ha funcionado, aparece esta ventana emergente cada dos minutos y no parece haber un patrón para cuando aparece.

Actualización 1:

Tan pronto como ingrese mis credenciales haciendo clic en el botón Preferencias del sistema en el cuadro de diálogo anterior (que puedo forzar, por ejemplo, abriendo Safari y comenzando a escribir una URL en el cuadro de ubicación), se crean dos registros en el llavero de inicio de sesión, ambos con idéntico contenido:

@ xxx.xxx.xxx.xxx (nombre de usuario) Contraseña de Internet Hoy, 09:10 -- iniciar sesión

Ambos registros parecen idénticos, con el mismo nombre y atributos. Ambos muestran que la aplicación que solicitó esto es AuthBrokerAgent:

Control de acceso a llaveros

Actualización 2:

También probé esta sugerencia: https://discussions.apple.com/message/23848961#message23848961 , copiando las entradas de autenticación del llavero de inicio de sesión al llavero del sistema y luego reiniciando, pero no lo solucionó. De hecho, el temido cuadro "Autenticación de proxy requerida" apareció de nuevo mientras escribía esto...

Actualización 3:

He usado Wireshark para observar el tráfico entre mi máquina y nuestro proxy:

  • El proxy regresa con a 407 Proxy Authentication Requiredy Proxy-Authenticate: NTLM, lo cual está en línea con mis expectativas, ya que nuestro proxy usa NTLM.
  • Algunos ejemplos que he visto en el tráfico (por ejemplo, iCloud) luego envían una NTLMSSP_NEGOTIATErespuesta.
  • El proxy regresa con una NTLMSSP_CHALLENGEsolicitud .
  • El servicio responde con NTLMSSP_AUTHmi nombre de usuario, que debe haber obtenido de alguna parte.
  • El proxy finalmente responde con un200 Connection established

Para mí, esto muestra que, en general, la autenticación de proxy funciona bien, si el sistema puede obtener el nombre de usuario y el proxy de alguna parte. La pregunta sigue siendo cómo/dónde almacenar el nombre de usuario/contraseña para que todos los servicios del sistema puedan encontrarlo. Algunos servicios del sistema (supongo) no tienen ningún medio para encontrar las credenciales de proxy donde las estoy almacenando actualmente.

¿Qué proxy estás usando? Recuerdo (de una vida pasada diferente) que un proxy que estábamos usando tenía la capacidad de no permitir el almacenamiento de contraseñas, lo que obligaba al usuario a autenticarse todas y cada una de las veces. Este podría ser el caso.
¿Alguna vez resolvió este problema porque encuentro el mismo problema ocasionalmente y me estoy conectando a una solución Citrix VPN? Una vez que aparece la ventana emergente, simplemente sucede una y otra vez y, finalmente, mi cuenta de AD se bloqueará. Todavía tengo que encontrar una solución que resuelva esto. Como estoy usando una MacBook Pro y la mayoría del Departamento de TI está basado en Windows, no he podido recibir ninguna información útil de TI. Una vez que me conecto a la VPN, estoy trabajando en aplicaciones de Oracle que se ejecutan en servidores Solaris SPARC. Realmente espero que encuentres una manera de resolver este problema. Stan
Lo siento, todavía no he encontrado una solución para esto. Lo que termino haciendo es mover la ventana que solicita las credenciales del proxy al costado de la pantalla sin presionar ninguno de los botones, eso lo mantiene silencioso al menos...
En mi caso, también aparecen dos elementos casi iguales en el llavero de inicio de sesión, pero hay una pequeña diferencia: uno de ellos es para el protocolo HTTP y el segundo para HTTPS.

Respuestas (3)

Es muy probable que este sea el comportamiento esperado si el administrador de su sistema/red ha configurado la autenticación forzada de proxy que requiere más que un esquema de autenticación básico.

Desde la página de Microsoft Manejo de la autenticación en la sección Acerca de la autenticación HTTP :

Hay dos tipos generales de esquemas de autenticación:

  • Esquema de autenticación básico, donde el nombre de usuario y la contraseña se envían en texto sin cifrar al servidor.
  • Esquemas de desafío-respuesta, que permiten un formato de desafío-respuesta.

Los esquemas de desafío-respuesta permiten una autenticación más segura. Si una solicitud requiere autenticación usando un esquema de desafío-respuesta, el código de estado apropiado y los encabezados de autenticación se devuelven al cliente. El cliente debe entonces reenviar la solicitud con una negociación. El servidor devolvería un código de estado apropiado con un desafío, y el cliente entonces requeriría volver a enviar la solicitud con la respuesta adecuada para obtener el servicio solicitado.

Si el proxy que está utilizando utiliza el esquema de autenticación básico , lo que está guardado en su llavero será suficiente para autenticarlo. Si se utiliza un esquema de respuesta de desafío , lo más probable es que deba proporcionar más información; en este caso, vuelva a ingresar su contraseña para autenticarse; y esto es lo que estás viendo.

Proceso de autenticación NTLM

Esto es mucho más que solo almacenar credenciales. El cliente debe generar una respuesta basada en una solicitud generada desde el servidor. La siguiente es una descripción muy resumida del proceso de autenticación desde la perspectiva del cliente/servidor según la documentación de Microsoft.

  • El cliente envía el nombre de usuario al servidor (en texto sin formato).

  • El servidor genera un número aleatorio de 16 bytes, llamado desafío o nonce, y lo envía al cliente.

  • El cliente cifra este desafío con el hash de la contraseña del usuario y devuelve el resultado al servidor. Esto se llama la respuesta.

  • El servidor envía los siguientes tres elementos al controlador de dominio:

    • Nombre de usuario
    • Reto enviado al cliente
    • Respuesta recibida del cliente
  • El DC valida el desafío y la respuesta encriptados. Si se autentica, se otorga acceso.

El tercer paso anterior requiere que el cliente haga un hash de un número aleatorio que obtuvo del servidor. Esto significa inherentemente que no hay nada que almacenar en su cliente macOS.

Como mínimo, debe unirse al dominio de Active Directory. Esto significa que necesita la compatibilidad con Kerberos habilitada y configurada correctamente para su organización específica.

Hay una frase clave en el documento "Manejo de autenticación" que vinculé anteriormente:

Si se requiere autenticación, se debe usar el indicador INTERNET_FLAG_KEEP_CONNECTION en la llamada a HttpOpenRequest. Se requiere el indicador INTERNET_FLAG_KEEP_CONNECTION para NTLM y otros tipos de autenticación para mantener la conexión mientras se completa el proceso de autenticación. Si no se mantiene la conexión, se debe reiniciar el proceso de autenticación con el proxy o servidor.

(Énfasis mío)

Según los síntomas que se presentan, parece que su organización requiere autenticación para el proxy; su nombre de usuario/contraseña son válidos, pero sigue (re) solicitando autenticación. Probablemente se deba a que está perdiendo el estado de conexión y tiene que hacer todo esto de nuevo. Lo que enfatiza aún más el punto....

Para resolver este problema, deberá comunicarse con el administrador de su red para que lo ayude con los problemas de autenticación.

¿Cómo puedo saber qué esquema de autenticación se está utilizando? ¿Hay un encabezado HTTP que pueda ver cuando una aplicación se comunica con el proxy? ¿Puedo hacer esto en la consola de red de Chrome o tengo que usar algo como Wireshark?
Lo más probable es que necesite usar Wireshark. Tenga en cuenta que también puede ser tráfico encriptado.
He agregado información de lo que he visto en Wireshark a la pregunta.
Gracias por agregar más información sobre NTLM a su respuesta. Entiendo NTLM, y por lo que puedo ver en la salida de Wireshark, está funcionando: el desafío/respuesta que describe se está realizando, por ejemplo, para los servicios de Dropbox o iCloud. Todavía no estoy seguro de qué servicio está apareciendo en los cuadros de diálogo de credenciales de proxy repetidos. Su respuesta contiene mucha información, pero realmente no me ayuda hasta ahora.
Connection Established!= Access Granted. Las personas que pueden confirmar que esto está funcionando son los administradores de su sistema/red en su departamento de TI.

Nota: marque el botón de opción para permitir que todas las aplicaciones usen proxy

mediante la autenticación de la configuración de modificación de la aplicación de llavero

A mí me funcionó durante un tiempo (unos minutos) y luego esta configuración se cambia automáticamente a "Confirmar antes de permitir el acceso" y las aplicaciones comienzan a mostrar ventanas emergentes nuevamente. Tengo la sospecha de que el elemento se elimina y se vuelve a crear con algunas opciones predeterminadas. No estoy seguro de qué aplicación hace esto y por qué.

Ejecute el siguiente comando desde Console.app:

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

Se le preguntará sobre el acceso al llavero. Acepte agregar el registro en el llavero y tendrá acceso sin la contraseña todo el tiempo cuando su llavero esté abierto.

He intentado esto, pero no soluciona el problema. El comando establece la configuración del proxy para mi usuario y almacena la autenticación en el loginllavero de mi usuario. Inmediatamente después de hacer esto, el cuadro de diálogo de autenticación de proxy que muestro arriba apareció nuevamente. Su solución sugerida no soluciona el problema para mí.
porque su llavero de inicio de sesión está bloqueado o tiene registros dobles
El llavero de inicio de sesión está desbloqueado, lo verifiqué dos veces. Sin embargo, el punto sobre los registros dobles podría ser válido. Eliminé todos los registros para la autenticación de proxy que encontré en los llaveros de inicio de sesión y del sistema, pero tan pronto como escribo mi contraseña una vez en el cuadro de diálogo de mi publicación original, termino con dos registros en el llavero de inicio de sesión, ambos con exactamente los mismos datos Si elimino uno, vuelve cuando ingreso mis credenciales nuevamente.
¿Tienes un wireshark instalado? ¿Podría volcar todas las negociaciones entre su osx y el servidor proxy y los registros de un llavero (seguridad find-generic-password -g -s your_proxy_definition)? Tengo la fuerte sensación de que la autenticación de proxy aparece por https, no por http. ¿Intentó definir su URL de proxy como https?
Probé el securitycomando que enumeró, no encuentra nada. Lo hace si cambio el find-generic-passwordcomando a find-internet-password, ya que el llavero enumera la entrada como "contraseña de Internet".
La URL del proxy está configurada como xxx.xxx.xxx.xxx , así ha estado funcionando, por ejemplo, desde la línea de comandos. Intentaré capturar algo usando Wireshark.
He agregado información de lo que he visto en Wireshark a la pregunta.
Parece que fue un error similar en 10.10
Parece que fue un error similar en 10.10 support.apple.com/kb/DL1785?locale=en_US . Entonces, ¿intentaste usar la configuración del proxy de Firefox, el comportamiento es diferente? (puede usar un proxy en todo el sistema e ingresar manualmente la configuración del proxy allí)
Probé Firefox, sin cambios...
¿Ambas variantes, proxy para todo el sistema en Firefox y configuración interna de Firefox para proxy http?
Sí, ambos, ninguno funcionó.