E 'possibile avere l'autenticazione senza stato

9

Per accedere alla maggior parte dei siti web è necessario un nome utente e una password che sono spesso memorizzati in un database SQL. Stai memorizzando informazioni per utente che possono cambiare, questo è lo stato. Puoi provare che qualcuno ha i diritti per accedere al tuo sistema, come un amministratore o un utente, senza la necessità di memorizzare lo stato per utente?

    
posta rook 30.03.2011 - 23:55
fonte

3 risposte

16

In una certa misura, puoi scaricare lo stato sui client. Codifica i diritti di accesso di un utente in un blob a cui aggiungi un MAC calcolato con una chiave segreta del server. Il blob-with-MAC viene quindi inviato al client. Più tardi, il client torna e mostra il blob; il server verifica il MAC e quindi si assicura che il blob sia legittimo. Questo programma è abbastanza buono sui cookie HTTP. Probabilmente, il blob potrebbe contenere alcuni dati crittografati (di nuovo con una chiave simmetrica solo sul server) se il server vuole memorizzare alcuni dati relativi all'utente senza renderlo visibile all'utente.

I problemi iniziano quando si desidera revocare o modificare i diritti. Non è possibile impedire a un client di mostrare un blob obsoleto. Questo può essere affrontato usando una combinazione di date di scadenza (il blob contiene una data ed è valido per, ad esempio, una settimana) e, se necessario, liste di revoche (il server conosce un elenco di BLOB che deve rifiutare, anche se il loro MAC sembra buono - questo è lo stato, ma non molto perché la maggior parte dei diritti di accesso non viene revocata).

Se l'entità che emette i diritti di accesso (quella che crea il blob) e l'entità che verifica i diritti di accesso (quella che verifica il MAC) non sono gli stessi, allora è necessario sostituire il MAC con uno schema di firma digitale .

    
risposta data 31.03.2011 - 00:30
fonte
1

Usando Kerberos la complessità che deve tenere traccia dello stato di autenticazione è isolata. Il passaggio finale per accedere al servizio fornisce al client un Ticket che contiene tutto lo stato richiesto per garantire l'autenticazione al client. La crittografia asimmetrica consente questa complessa stretta di mano senza richiedere la comunicazione tra i tre server. Il server di stampa alla fine non richiede uno stato o un database memorizzato delle credenziali dell'utente.

    
risposta data 31.03.2011 - 02:04
fonte
1

puoi andare su amministratore di sistema e diritti utente su un sistema, consentire agli amministratori solo l'accesso locale e chiunque altro qualsiasi accesso utente.
sarebbe piuttosto caotico, però.

imageboard (wakaba, futaba, & c.) hanno una sorta di token che viene criptato e visualizzato accanto al nick dell'utente, in modo che le persone possano dimostrare chi sono.
gli utenti su questi siti non hanno molti diritti oltre a pubblicare, anche se non è meno caotico.

    
risposta data 31.03.2011 - 21:46
fonte

Leggi altre domande sui tag