Você não pode ocultar a URL do servidor de utilitários do cliente sem fazer proxy no servidor da web. Eu configuraria uma chave compartilhada no servidor da Web e no servidor do utilitário e procederia da seguinte maneira:
O servidor da web desenha um link ou redireciona o cliente para o servidor do utilitário com os seguintes parâmetros:
- nome de usuário autenticado
- carimbo de data / hora de geração de link (ou redirecionamento)
- ip do cliente
- assinatura (os 3 valores anteriores foram divididos com a chave compartilhada)
No servidor do utilitário, você verifica isso:
- A assinatura recebida está correta (refazendo o hash com o compartilhamento chave)
- o ip do cliente é o mesmo que o relatado no parâmetro
- o tempo decorrido desde que o timestamp recebido no parâmetro é menor que uma quantidade razoável (10-20 segundos deve ser suficiente, dado que ambos servidor web e servidor de utilitários usam a mesma fonte de tempo)
Se todas as verificações forem passadas, você poderá aceitar o usuário como autenticado (porque confia na chave compartilhada), iniciar uma sessão e desenhar o formulário para o upload do arquivo.