Abbiamo il seguente requisito per la creazione di un token in .NET da utilizzare per fornire un token di sfida e un token di autenticazione (auth) effettivo. Il token auth verrà quindi utilizzato per la transazione precedente autenticata insieme all'autenticazione basata su certificato. Si prega di dare un'occhiata e controllare se la soluzione qui sotto sembra sana in base a questi requisiti.
Requisiti
- Lunghezza minima di 128 bit
- Generato casualmente
- Imprevedibile / non percettibile (ad esempio, assicurati che il seeding del generatore di numeri casuali sia buono),
- Unico durante il suo periodo di validità,
- Non deve contenere informazioni significative (solo dati casuali).
Soluzione
-
Genera token usando rngcryptoserviceprovider e memorizzalo come binario a 16 byte. Ho anche visto un post correlato ( Autenticazione basata su token - Protezione del token ) per hash il token nel database, ma mi è stato detto che non è necessario per ora, quindi stavo pensando a quale dovrebbe essere la dimensione della colonna del mio database? binary (16) è un po 'corto.
-
(# 2, # 3, # 5). Utilizzando rngcryptoserviceprovider per generare una stringa casuale link )
La colonna della tabella -
(# 4) non ha un vincolo univoco, ma otterrà l'ultima in base al tempo di creazione nel caso nell'improbabile evento che si verifichi un duplicato.