2009-06-18 3 views
0

Ich entwickle benutzerdefinierte Client/Server-Anwendung, die Client benötigt, um sich mit ihrem Benutzernamen und Passwort anmelden. Die Benutzerkonten sind in keiner Weise mit Windows-/AD-Konten verknüpft. Nach der Anmeldung fordert die Client-Anwendung andere Dienste vom Serversystem an.Authentifizierung und Sicherheitsmodell in Client/Server-Anwendungen

Meine Frage ist, was ist der beste Weg, dies zu implementieren? Welche Art von Architektur würde hier am besten passen? Ich denke, eine Art Ticket/Token-Authentifizierungssystem muss implementiert werden ???

Dank

Antwort

1

Sie können in der Tat wollen ein System implementieren, die entlang zwischen den verschiedenen Teilen (Login-Server, Client, Applikationsserver) "Tickets" geht. Dieses Ticket enthält grundlegende Informationen wie die Benutzer-ID (den Benutzernamen, die Zeilen-ID usw.). Dieses Ticket wird entweder mit einem geheimen Schlüssel verschlüsselt, den die autorisierten Server teilen, oder wird mit einem Hash des Ticket-Inhalts versehen, der mit einem geheimen Schlüssel gesalbt ist, den die Server teilen. Der erste Weg ermöglicht es nur den autorisierten Servern, das Ticket zu erstellen und zu lesen, und der zweite Weg ermöglicht es den autorisierten Servern zu überprüfen, dass nur die autorisierten Server das Ticket erstellt haben können, aber jedem erlauben, das Ticket zu lesen. Alle App-Server prüfen das Ticket (indem sie versuchen, es zu entschlüsseln oder zu verifizieren, dass der Hash übereinstimmt), bevor sie mit Aktionen fortfahren, die geschützt werden sollen. Wenn dies eine Web-App ist, dann sind Cookies ein guter Ort, um das Ticket zu speichern.

+0

Haben Sie Code-Beispiele? Sprache und Plattform spielen keine Rolle. –

0

Sie haben gesagt, nicht viel über Ihre Architektur, außer es ist Client/Server, so dass ich gehe davon aus Sie irgendeine Art von Formulardesigner wie Windows Forms in VS. verwenden In diesen Fällen habe ich immer eine Form der Datenbanktabellenauthentifizierung verwendet, da diese einfach, einfach einzurichten und einigermaßen sicher ist. Sie können sogar Gruppen und Rollen auf diese Weise einrichten, ohne viel Aufhebens.

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

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

Table: UserRoles 
Fields: UserID FK 
     RoleID FK