Domanda

Sto sviluppando un'applicazione client / server personalizzata che richiede al client di accedere con nome utente e password. Gli account utente non sono in alcun modo correlati agli account Windows / AD. Dopo l'accesso, l'applicazione client richiederà altri servizi dal sistema server.

La mia domanda è qual è il modo migliore per implementarlo? Che tipo di architettura si adatterebbe meglio qui? Immagino che debba essere implementato un qualche tipo di sistema di autenticazione ticket / token ???

Grazie

È stato utile?

Soluzione

Potresti infatti voler implementare un sistema che passa " ticket " tra le diverse parti (server di accesso, client, server app). Questo ticket conterrà informazioni di base come l'ID utente (nome utente, ID riga, ecc.). Questo ticket verrà crittografato con una chiave segreta condivisa dai server autorizzati o verrà timbrato con un hash del contenuto del ticket salato con una chiave segreta condivisa dai server. Il primo modo consente solo ai server autorizzati di creare e leggere il ticket, mentre il secondo modo consente ai server autorizzati di verificare che solo i server autorizzati avrebbero potuto creare il ticket, ma consente a chiunque di leggerlo. Tutti i server delle app controlleranno il ticket (tentando di decrittografarlo o verificando che l'hash corrisponda) prima di procedere con qualsiasi azione che debba essere protetta. Se si tratta di un'app Web, i cookie sono un buon posto per archiviare il biglietto.

Altri suggerimenti

Non hai detto molto sulla tua architettura, oltre a Client / Server, quindi presumo che tu stia utilizzando una sorta di designer di moduli come Windows Form in VS. In questi casi ho sempre usato una qualche forma di autenticazione della tabella del database, poiché è facile, semplice da configurare e ragionevolmente sicuro. Puoi anche impostare gruppi e ruoli in questo modo, senza troppe storie.

Table:  Users
Fields: UserID   PK
        Login    Text
        Password Text
        ...

Table:  Roles
Fields: RoleID   PK
        Role     Text
        ...

Table:  UserRoles
Fields: UserID    FK
        RoleID    FK
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top