Come funziona il certificato client per l'autenticazione (in Web API)

5

Ho lavorato a questo scenario per una settimana. Ho implementato il codice per autenticare il certificato client utilizzando questo link: link .

Alcune domande sono ancora lì:

  1. Come posso verificare che il certificato di richiesta provenga solo dal client autorizzato? (So usare la chiave privata ma come?)
  2. Attualmente utilizzo un certificato SSL e client autofirmato. Da dove e come posso ottenere un certificato di fiducia? (Lo so, da una CA, ma qual è il vero processo?)
  3. Come posso rilasciare un certificato client ai miei clienti fidati?

Ho così tante risposte ad anello per le domande di cui sopra. Ho bisogno di una risposta pulita per le domande di cui sopra. Sto usando ASP.NET 4.5 (webAPI).

Qualsiasi aiuto sarà apprezzato.

    
posta DSA 25.09.2015 - 11:12
fonte

1 risposta

8

Il mutuo TLS (ovvero l'autenticazione client) è una soluzione a questo.

Per quanto riguarda l'emissione di certificati, non lo farei. Prendevo i certificati autofirmati dal client e li collegavo direttamente ai principal (utenti) in qualche modo. Avrei una tabella di ricerca indicizzata dal nome comune e dalla chiave pubblica del certificato per farlo. Ciò rende molto più facili problemi come la revoca di certificati (eliminare la riga) e la compromissione di CA (nessuno coinvolto).

In alternativa puoi richiedere i CSR dai clienti e firmarli utilizzando una CA di cui ti fidi (una terza parte o la tua CA interna se la tua organizzazione ha le competenze e le risorse per proteggerla correttamente).

Ecco una buona descrizione di alto livello di The Code Project e hanno codice di esempio .NET che lo dimostra:

Mutual SSL authentication or certificate based mutual authentication refers to two parties authenticating each other through verifying the provided digital certificate so that both parties are assured of the others' identity. In technology terms, it refers to a client (web browser or client application) authenticating themselves to a server (website or server application) and that server also authenticating itself to the client through verifying the public key certificate/digital certificate issued by the trusted Certificate Authorities (CAs). Because authentication relies on digital certificates, certification authorities such as Verisign or Microsoft Certificate Server are an important part of the mutual authentication process. From a high-level point of view, the process of authenticating and establishing an encrypted channel using certificate-based mutual authentication involves the following steps:

  1. A client requests access to a protected resource.
  2. The server presents its certificate to the client.
  3. The client verifies the server’s certificate.
  4. If successful, the client sends its certificate to the server.
  5. The server verifies the client’s credentials.
  6. If successful, the server grants access to the protected resource requested by the client.

SOURCE: link

    
risposta data 25.09.2015 - 11:49
fonte

Leggi altre domande sui tag