Como armazenar credenciais de proxy no macOS para que elas sejam usadas pelos serviços do sistema?


14

Estou usando o macOS Sierra 10.12.6 atrás de um proxy NTLM corporativo. Meu navegador e outros aplicativos estão usando as configurações de proxy do sistema, nas quais salvei meu nome de usuário e senha para autenticação com o proxy. Isso está funcionando bem.

Há um problema persistente com os serviços do sistema que tentam acessar informações na Internet e não veem acesso às credenciais de proxy na minha conta de usuário. Eu vejo o seguinte pop-up a cada dois minutos, e o que eu faço (atualizando minhas credenciais nas Preferências do Sistema ou pressionando "Não Agora"), o pop-up continua aparecendo repetidamente:

Autenticação de proxy necessária

O texto no pop-up diz:

Autenticação de proxy necessária

Digite a senha para o proxy HTTP http://xxx.xxx.xxx.xxx:yyyy nas Preferências do Sistema.

O que posso fazer para impedir que este pop-up apareça?

Coisas que eu tentei até agora:

  • Atualizei minhas credenciais em Preferências do sistema ( Rede> Avançado> Proxy )
  • Copiei as entradas de credenciais do meu chaveiro de login para o sistema , pois li uma recomendação para isso em uma postagem no blog ou em uma pergunta no fórum.

Nada disso funcionou, eu recebo esse pop-up a cada dois minutos e não parece haver um padrão quando ele aparece.

Atualização 1:

Assim que insiro minhas credenciais, clicando no botão Preferências do sistema na caixa de diálogo acima (que eu posso forçar abrindo o Safari e começando a digitar um URL na caixa local), dois registros são criados no chaveiro de login , ambos com identificações idênticas. conteúdo:

@ xxx.xxx.xxx.xxx (nome de usuário) Senha da Internet hoje, 09:10 - faça o login

Ambos os registros parecem idênticos, com o mesmo nome e atributos. Ambos mostram que o aplicativo que solicitou isso é AuthBrokerAgent:

Controle de acesso ao chaveiro

Atualização 2:

Também tentei esta sugestão: https://discussions.apple.com/message/23848961#message23848961 , copiando as entradas de autenticação da chave de login para a chave do sistema e depois reinicializando, mas não foi corrigida. De fato, a temida caixa "Proxy Authentication Required" apareceu novamente ao digitar isso ...

Atualização 3:

Eu usei o Wireshark para dar uma olhada no tráfego entre minha máquina e nosso proxy:

  • O proxy retorna com a 407 Proxy Authentication Requirede Proxy-Authenticate: NTLM, o que está de acordo com minha expectativa, já que nosso proxy usa NTLM.
  • Alguns exemplos que eu vi no tráfego (por exemplo, iCloud), em seguida, devolvem uma NTLMSSP_NEGOTIATEresposta.
  • O proxy volta com uma NTLMSSP_CHALLENGEsolicitação
  • O serviço responde com NTLMSSP_AUTHe meu nome de usuário, que ele deve ter obtido de algum lugar.
  • O proxy finalmente responde com um 200 Connection established

Para mim, isso mostra que, em geral, a autenticação de proxy funciona bem, se o sistema puder obter o nome de usuário e o proxy de algum lugar. A questão permanece como / onde armazenar o nome de usuário / senha para que todos os serviços do sistema possam encontrá-lo. Alguns serviços do sistema (suponho) não têm como encontrar as credenciais de proxy onde estou armazenando-as.



Qual proxy você está usando? Lembro-me (de uma vida passada diferente) que um proxy que estávamos usando tinha a capacidade de impedir o armazenamento de senhas, forçando assim o usuário a autenticar-se sempre. Este poderia ser o caso.
Allan

1
Você já resolveu esse problema porque, ocasionalmente, encontro o mesmo problema e estou me conectando a uma solução VPN Citrix. Quando o pop-up aparece, isso acontece várias vezes e, eventualmente, minha conta do AD será bloqueada. Ainda não encontrei uma solução que resolva isso. Como estou usando um MacBook Pro e a maioria do departamento de TI é baseada no Windows, não consegui receber nenhuma informação útil da TI. Depois de me conectar à VPN, estou trabalhando em aplicativos Oracle em execução nos servidores Solaris SPARC. Eu realmente espero que você encontre uma maneira de resolver esse problema. stan
Stan Repetta 23/02/19

Desculpe, ainda não encontrei uma solução para isso. O que eu acabo fazendo é que eu mover a janela que pede as credenciais de proxy para o lado da tela sem pressionar qualquer um dos botões - que mantém isso em segredo, pelo menos ...
nwinkler

Respostas:


9

Esse é provavelmente o comportamento esperado se o administrador do sistema / rede tiver configurado a autenticação de força de proxy que requer mais do que apenas um esquema de autenticação básico.

Na página da Microsoft, Manipulando autenticação na seção Sobre autenticação HTTP :

Existem dois tipos gerais de esquemas de autenticação:

  • Esquema de autenticação básica, onde o nome do usuário e a senha são enviados em texto não criptografado para o servidor.
  • Esquemas de desafio-resposta, que permitem um formato de desafio-resposta.

Os esquemas de resposta a desafios permitem uma autenticação mais segura. Se uma solicitação exigir autenticação usando um esquema de desafio-resposta, o código de status apropriado e os cabeçalhos de autenticação serão retornados ao cliente. O cliente deve então reenviar a solicitação com uma negociação. O servidor retornaria um código de status apropriado com um desafio e o cliente exigiria que reenviasse a solicitação com a resposta adequada para obter o serviço solicitado.

Se o proxy que você estiver usando utilizar o esquema básico de autenticação , o que é salvo no seu chaveiro será suficiente para autenticar você. Se um esquema de resposta a desafios estiver sendo usado, você provavelmente precisará fornecer mais informações - nesse caso - redigite sua senha - para autenticar; e é isso que você está vendo.

Processo de autenticação NTLM

Isso é muito mais do que apenas armazenar credenciais. O cliente deve gerar uma resposta com base em uma solicitação gerada do servidor. A seguir, é apresentada uma descrição muito resumida do processo de autenticação da perspectiva do cliente / servidor, de acordo com a documentação da Microsoft

  • O cliente envia o nome de usuário para o servidor (em texto sem formatação).
  • O servidor gera um número aleatório de 16 bytes, chamado de desafio ou não, e o envia ao cliente.
  • O cliente criptografa esse desafio com o hash da senha do usuário e retorna o resultado ao servidor. Isso é chamado de resposta.
  • O servidor envia os três itens a seguir para o controlador de domínio:

    • Nome do usuário
    • Desafio enviado ao cliente
    • Resposta recebida do cliente
  • O controlador de domínio valida o desafio e a resposta criptografados. Se autenticado, o acesso é concedido.

A terceira etapa acima, exige que o cliente faça o hash de um número aleatório obtido do servidor. Isso significa que não há nada a ser armazenado no seu cliente macOS.

No mínimo, você precisa ingressar no domínio do Active Directory. Isso significa que você precisa do suporte Kerberos habilitado e configurado corretamente para sua organização específica.

Há uma frase-chave no documento "Manipulando autenticação" que vinculei acima:

Se a autenticação for necessária, o sinalizador INTERNET_FLAG_KEEP_CONNECTION deve ser usado na chamada para HttpOpenRequest. O sinalizador INTERNET_FLAG_KEEP_CONNECTION é necessário para NTLM e outros tipos de autenticação para manter a conexão ao concluir o processo de autenticação. Se a conexão não for mantida, o processo de autenticação deverá ser reiniciado com o proxy ou o servidor.

(Ênfase minha)

Com base nos sintomas apresentados, parece que sua organização requer autenticação no proxy; seu nome de usuário / senha são válidos, mas continuam solicitando autenticação. Provavelmente porque você está perdendo o estado da conexão e precisando fazer isso novamente. O que enfatiza ainda mais o ponto ....

Para resolver esse problema, entre em contato com o administrador da rede para ajudá-lo com os problemas de autenticação.


1
Como posso descobrir qual esquema de autenticação está sendo usado? Existe um cabeçalho HTTP que eu possa ver quando um aplicativo estiver conversando com o proxy? Posso fazer isso no console de rede do Chrome ou preciso usar algo como o Wireshark?
Nwinkler 15/08

Muito provavelmente, você precisaria usar o Wireshark. Lembre-se de que também pode ser tráfego criptografado.
Allan

1
Adicionei algumas informações do que vi no Wireshark à pergunta.
Nwinkler

1
Obrigado por adicionar mais informações sobre o NTLM à sua resposta. Entendo o NTLM e, pelo que vejo da saída do Wireshark, está funcionando - o desafio / resposta que você descreve está sendo realizado, por exemplo, para os serviços Dropbox ou iCloud. Ainda não tenho certeza de qual serviço está aparecendo nas caixas de diálogo de credenciais de proxy repetidas. Sua resposta contém muitas informações, mas realmente não me ajuda até agora.
Nwinkler 16/08/19

1
Connection Established! = Access Granted. As pessoas que podem confirmar que isso está funcionando são seus administradores de sistema / rede em seu departamento de TI.
Allan

1

Nota: marque o botão de opção para permitir que todos os aplicativos usem proxy

pela autenticação da configuração de modificação do aplicativo da cadeia de chaves


-2

Execute o seguinte comando em Console.app:

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

Você será perguntado sobre o acesso ao chaveiro. Concorde em adicionar o registro ao chaveiro e você terá acesso sem a senha o tempo todo quando o chaveiro estiver aberto.


1
Eu tentei isso, mas não resolve o problema. O comando define a configuração do proxy para o meu usuário e armazena a autenticação no conjunto de loginchaves do meu usuário . Logo após fazer isso, a caixa de diálogo de autenticação de proxy mostrada acima apareceu novamente. Sua correção sugerida não resolve o problema para mim.
N

porque o seu chaveiro login está bloqueado ou você tem registros duplas
Siarhei Karatkevich

1
O chaveiro de login está desbloqueado, verifiquei isso duas vezes. O argumento sobre registros duplos pode ser válido, no entanto. Excluí todos os registros para a autenticação de proxy que encontrei nos chaveiros de login e sistema, mas assim que digito minha senha uma vez na caixa de diálogo da postagem original, acabo com dois registros no chaveiro de login, ambos com exatamente os mesmos dados. Se eu excluir uma, ela volta quando eu insiro minhas credenciais novamente.
Nwinkler

1
Eu tentei o securitycomando que você listou - ele não encontra nada. Isso acontece se eu alterar o find-generic-passwordcomando para find-internet-password, uma vez que o Keychain lista a entrada como "senha da Internet".
Nwinkler 15/08/19

1
A URL do proxy é configurada como xxx.xxx.xxx.xxx , é assim que funciona, por exemplo, na linha de comando. Vou tentar capturar algo usando o Wireshark.
Nwinkler 15/08/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.