Certificato client vs HMAC

2

Il mio team sta lavorando al progetto dell'API web per un cliente che chiamerà questa API. Ora stiamo pensando all'autenticazione. Ci siamo fermati su due opzioni HMAC e certificati client

  • HMAC :

    • professionisti - nessuna scadenza (solo una coppia di ID client e chiave segreta),
    • contro - logica complessa per il client che implementa il token HMAC.
  • Certificato client :

    • pros - semplice per client (basta allegare il certificato client a httprequest),
    • contro - scadenza, è necessario supportare il rinnovo dei certificati.

Per favore aiutatemi con pro e contro qui.

    
posta mtkachenko 14.12.2015 - 12:40
fonte

2 risposte

7

Nel complesso, consiglierei HMAC se non si hanno requisiti particolari per i certificati client. I motivi sono:

Scadenza

Anche se è vero che non esiste una scadenza obbligatoria con HMAC, in realtà, è necessario scadere regolarmente qualsiasi tipo di password / chiave segreta / crittografica. Questo è applicato dai certificati, ma dovresti farlo come criterio per qualsiasi chiave di questo tipo. Non penso che questo sia un vero professionista per HMAC.

Intermediari

Se si dispone di un intermediario come un firewall di applicazioni Web che deve ispezionare le richieste, può essere complesso utilizzare i certificati client. Questo è un con per i certificati client e un professionista per HMAC.

Complessità

È veramente così complesso da creare un HMAC? Ci sono librerie client per fare questo per Ruby, Java, .Net, Node e Python. Ho smesso di fare ricerche su Google, ma sono sicuro che le piattaforme più moderne hanno una biblioteca esistente. Questo è probabilmente un professionista per i certificati, come hai detto, ma relativamente secondario a mio parere.

La familiarità

HMAC è in uso in alcune API diffuse provenienti da diversi settori di mercato (ad esempio Twitter, AWS, Xero). Penso che i certificati client siano relativamente rari al di fuori delle impostazioni aziendali. Questo è un pro per HMAC e un cono per i certificati client. Disclaimer: questo è soggettivo. Non ho prove concrete per questo: si basa solo su ciò che ho sperimentato nella pratica.

    
risposta data 14.12.2015 - 14:54
fonte
2

Fai attenzione, stai confondendo due tipi di autenticazione qui:

  • Gli HMAC autenticano solo un singolo messaggio e non un intero utente / client ( dai uno sguardo qui per favore ). Gli HMAC potrebbero aver bisogno di un utente / client già autenticato o fidato in anticipo.
  • I certificati client si autenticano, come già suggerisce il nome, i client.

Quindi, in base alle specifiche della tua API, puoi usare entrambi?

    
risposta data 14.12.2015 - 13:11
fonte

Leggi altre domande sui tag