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:
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:
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
:
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:
407 Proxy Authentication Required
y Proxy-Authenticate: NTLM
, lo cual está en línea con mis expectativas, ya que nuestro proxy usa NTLM.NTLMSSP_NEGOTIATE
respuesta.NTLMSSP_CHALLENGE
solicitud .NTLMSSP_AUTH
mi nombre de usuario, que debe haber obtenido de alguna parte.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.
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.
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.
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.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.
login
llavero 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í.security
comando que enumeró, no encuentra nada. Lo hace si cambio el find-generic-password
comando a find-internet-password
, ya que el llavero enumera la entrada como "contraseña de Internet".
nwinkler
Alano
Stan Repetta
nwinkler
eNca