¿Cómo almacenar credenciales de proxy en macOS para que sean utilizadas por los servicios del sistema?

14

Estoy usando macOS Sierra 10.12.6 detrás de un proxy corporativo NTLM. Mi navegador y otras aplicaciones están usando la configuración del proxy del sistema, en la que he guardado 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 información en Internet y no ven el acceso a las credenciales de 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 "No ahora"), 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 evitar que aparezca 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 en el llavero del sistema , ya que leí una recomendación para eso en una publicación de blog o pregunta del foro.

Ninguno de estos ha funcionado, aparece esta ventana emergente cada dos minutos, y no parece haber un patrón 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 - inicio de 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 de llavero

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 en el llavero del sistema y luego reiniciando, pero no lo solucionó. De hecho, el temido cuadro "Se requiere autenticación de proxy" apareció de nuevo al escribir esto ...

Actualización 3:

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

  • El proxy regresa con una 407 Proxy Authentication Requiredy Proxy-Authenticate: NTLM, que 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 vuelve con una NTLMSSP_CHALLENGEsolicitud
  • El servicio responde con NTLMSSP_AUTHy mi nombre de usuario, que debe haber obtenido de alguna parte.
  • El proxy finalmente responde con un 200 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.

nwinkler
fuente
Pregunta relacionada: apple.stackexchange.com/questions/117556/…
nwinkler
¿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 obligó al usuario a autenticarse cada vez. Este podría ser el caso.
Allan
1
¿Alguna vez resolvió este problema porque ocasionalmente encuentro el mismo problema 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 uso un 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 Oracle que se ejecutan en servidores Solaris SPARC. Realmente espero que encuentres una manera de resolver este problema. Stan
Stan Repetta
Lo sentimos, aún no he encontrado una solución para esto. Lo que termino haciendo es que me muevo la ventana que solicita las credenciales de proxy a un lado de la pantalla sin necesidad de pulsar cualquiera de los botones - que mantiene en secreto al menos ...
nwinkler

Respuestas:

9

Este es el comportamiento más probable esperado si el administrador de su sistema / red ha configurado la autenticación de fuerza de proxy que requiere más que un simple esquema de autenticación básico.

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

Hay dos tipos generales de esquemas de autenticación:

  • Esquema básico de autenticación, donde el nombre de usuario y la contraseña se envían en texto sin formato 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 utilizando 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 reenviar la solicitud con una negociación. El servidor devolvería un código de estado apropiado con un desafío, y el cliente requeriría reenviar 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 tenga que proporcionar más información, en este caso, volver 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 por el servidor. A continuación se incluye una descripción 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
    • Desafío 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 extraiga 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 el soporte de Kerberos habilitado y configurado correctamente para su organización específica.

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

Si se requiere autenticación, el indicador INTERNET_FLAG_KEEP_CONNECTION debe usarse en la llamada a HttpOpenRequest. El indicador INTERNET_FLAG_KEEP_CONNECTION se requiere 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, el proceso de autenticación debe reiniciarse con el proxy o el servidor.

(El énfasis es 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 sea porque está perdiendo el estado de conexión y tiene que volver a hacer esto. 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.

Alano
fuente
1
¿Cómo puedo saber qué esquema de autenticación se está utilizando? ¿Hay un encabezado HTTP que pueda ver cuando una aplicación está hablando con el proxy? ¿Puedo hacer esto en la consola de red de Chrome o tengo que usar algo como Wireshark?
nwinkler
Lo más probable es que necesite usar Wireshark. Tenga en cuenta que también puede ser tráfico encriptado.
Allan
1
He agregado información de lo que he visto en Wireshark a la pregunta.
nwinkler
1
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 los diálogos repetidos de credenciales de proxy. Su respuesta contiene mucha información, pero hasta ahora no me ayuda.
nwinkler
1
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.
Allan
1

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

mediante la autenticación de la configuración de modificación de la aplicación de cadena clave

Rahul Kumar
fuente
-2

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 de llavero. Acepta agregar el registro al llavero y tendrás acceso sin contraseña todo el tiempo cuando el llavero esté abierto.

Siarhei Karatkevich
fuente
1
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 . Justo después de hacer esto, el diálogo de autenticación de proxy que muestro arriba apareció nuevamente. Su solución sugerida no soluciona el problema para mí.
nwinkler
porque su llavero de inicio de sesión está bloqueado o tiene registros dobles
Siarhei Karatkevich
1
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 el inicio de sesión y los llaveros del sistema, pero tan pronto como escribo mi contraseña una vez en el cuadro de diálogo en 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.
nwinkler
1
Intenté 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".
nwinkler
1
La URL del proxy está configurada como xxx.xxx.xxx.xxx , así es como ha estado funcionando, por ejemplo, desde la línea de comandos. Intentaré capturar algo usando Wireshark.
nwinkler