Tenho uma solicitação do meu cliente que é mais ou menos assim:
Este é um site público comalgunsinformações para funcionários da agência. Meu cliente deseja ter um pop-up na primeira página que apareça apenas para funcionários.
A agência usa cartões CAC para autenticação, esses cartões possuem vários certificados. Em sites internos, é bastante simples configurar o IIS de acordo e depois comparar com o AD.
No entanto, como este é um site externo, não quero autenticar por si só. Quero que o IIS verifique silenciosamente a existência de CAC/certificados, se eles estiverem lá, e execute a lógica pop-up, se não, ignore-a. A segunda parte é toda a codificação, mas preciso saber se o IIS pode tentar procurar silenciosamente o CAC/Certs
Minha ideia original era comparar o IP da solicitação com nossos intervalos de IP internos, mas meus servidores estão atrás de um balanceador de carga e, quando chegasse aos meus servidores, a solicitação teria o IP do balanceador de carga e todas as solicitações estariam dentro do alcance.
É uma situação complexa e todas as investigações que fiz até agora dizem que não pode ser feito, mas queria perguntar
desde já, obrigado
Responder1
Um servidor web não pode “olhar” os smartcards dos clientes – isso éinteiramentefeito pelo navegador da web. Praticamente a única maneira pela qual o IIS pode influenciar isso é enviando uma lista de DNs de emissores de certificados "aceitáveis" (e acho que isso também não é mais possível no TLSv1.3). Mas se o navegador achar que precisa mostrar uma lista de certificados, entãovaimostrar uma lista de certificados.
A maioria dos sites, mesmo aqueles que usam CAC ou outra autenticação de certificado de cliente, possuem uma URL de login dedicada que requer autenticação de certificado, mas o resto do sistema não. Em vez disso, o estado "logado" é realizado por meio de cookies/sessões tradicionais. Isso permite que o sistema ofereça vários métodos de autenticação diferentes. (Não sei se o IIS oferece suporte à autenticação de certificado por URL; talvez seja necessário usar um subdomínio separado para a página de "login".)
Um exemplo é a página de “entrada” em https://account.cern.ch/account/
, que na verdade parece lidar com tudo por meio do Microsoft ADFS.
Alternativamente, você pode hospedar todo o webapp em dois subdomínios diferentes: um para acesso público e outro que requer autenticação. ( https://public.cyber.mil/
é um exemplo que vi recentemente.)