Domanda

Mi piacerebbe creare un'architettura di servizio Web che può essere chiamata da varie piattaforme come dispositivi mobili, applicazioni winforms, iphone, blackberry, lo chiami. Quindi andare con qualcosa come WCF e l'associazione wsHttp probabilmente uccide questo e avrei bisogno di eseguire il downgrade a un'associazione BasicHttp per compatibilità.

Detto questo, ho bisogno di un sistema per generare un token al login iniziale (autenticazione) e quindi utilizzare questo token per tutte le chiamate successive, immagino, per convalidare l'autenticazione e consentire l'esecuzione del metodo.

Qualcuno ha suggerimenti o suggerimenti su come procedere? 1) Generare un token e cosa comporta un token sicuro? 2) Per quanto tempo il token è valido, alcuni utenti possono utilizzare la loro applicazione per ore e possibilmente anche "dormire". il loro computer

Grazie per il consiglio.

È stato utile?

Soluzione

Se si utilizza un solo token fornito dal server nell'autenticazione iniziale, può essere utilizzato per qualsiasi richiesta se intercettato. La tua unica difesa è il tempo di scadenza.

Oltre a ciò, dipende da quali sono le opzioni di implementazione.

Un sistema più sicuro è quello di aggiungere un timestamp (e possibilmente un nonce) ad ogni richiesta, firmarlo e includerlo in ogni richiesta. Richiede che il client gestisca le credenziali di autenticazione, conosca l'implementazione della firma e firmi ogni richiesta.

In alternativa, è possibile fare in modo che il server esegua l'autenticazione con ogni richiesta (che potrebbe essere eseguita con OpenID) o distribuire un numero di token e riautenticare quando ne sono necessari altri (cosa che potrebbe essere eseguita con OAuth). Se il client può archiviare le credenziali, queste possono essere invisibili all'utente. Questi sono più complessi, richiedono un trasporto crittografato come SSL per alcune delle interazioni e un client in grado di parlare reindirizzamenti HTTP e gestire i cookie o altri stati memorizzati. Il client non dovrebbe sapere come firmare, ma se puoi fare SSL, probabilmente non avrai bisogno della complessità in primo luogo.

Se non è necessario essere agnostici per il cliente, probabilmente si desidera firmare le richieste.

Per la firma di implementazioni, esempi e librerie, guarda Amazon Web Services, OpenID o OAuth.

Per quanto riguarda il tempo di scadenza del token, dipende dalle tue esigenze. Una durata del token più lunga aumenta gli attacchi di replay della finestra. Un nonce crea un token monouso, ma richiede più stato sul server.

Altri suggerimenti

Dovresti dare un'occhiata a OAuth . È uno standard per l'autenticazione API, probabilmente puoi semplicemente collegare un'implementazione esistente al tuo servizio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top