Che tipo di autenticazione utente ho bisogno per una riposante API web

1

Sto facendo una riposante API web con asp.net Web API 2

Non voglio usare alcuna forma di cookie o autenticazione di base (invia utente / passa in chiaro, quindi SSL necessario)

Non uso / ho bisogno di materiale di reclamo.

Non ho ancora deciso su asp.net self hosting o IIS.

Voglio solo inviare un token crittografato tra il server client tramite SSL.

Sto utilizzando Entity framework 6, .NET 4.5.1 e voglio solo fare azioni CRUD sulla mia tabella utente.

Non di più.

Qual è il modello / libreria / approccio del progetto con cui dovrei iniziare a fare quanto sopra?

    
posta Pascal 27.12.2013 - 01:17
fonte

1 risposta

3

Utilizza HMAC con un ID cliente.

Il client usa il loro "segreto" salt per firmare il messaggio e quindi inviare al server l'hash generato insieme al suo ID. Il server cerca ciò che il "segreto" dovrebbe essere basato sull'ID inviato dal client, rigenera l'hash con il segreto recuperato come sale. Se l'hash generato dal server corrisponde all'hash fornito dal client, la richiesta è legittima.

Non sono una persona ASP / .NET, quindi non posso fornire alcuna informazione su libs né approccio tecnico, ma ecco qualche pseudo codice:

client

var messageBody = 'POST PLAIN TEXT BODY';
var clientId = '12345';
var secret = 'abcdef';
var digest = createHash(messageBody,secret); // function createHash(string,salt)
var url = 'http://example.org/api?clientId='+clientId+'&hmac='+digest;
sendRequest(url,messageBody); // function sendRequest(url,postbody)

server

var messageBody = 'POST PLAIN TEXT BODY';
var clientId = '12345'; // from GET query
var hmac = '...'; // from GET query
var secret = lookupSecret(clientId);
var digest = createhash(messageBody,secret);
if ( hmac == digest ) {
    // success, handle messageBody
} else {
    // error
}

Considera l'utilizzo di un nonce per prevenire attacchi man-in-the-middle, se ciò ti preoccupa.

    
risposta data 27.12.2013 - 04:30
fonte

Leggi altre domande sui tag