2008-09-17 5 views
1

Wir haben eine Client/Server-Anwendung mit einem Rich-Client-Frontend (in .Net) und einem Administrationsportal (Asp.Net). Derzeit müssen sich Benutzer sowohl im Rich Client als auch auf der Website anmelden. Wir möchten ihnen ermöglichen, sich beim Rich Client anzumelden, müssen sich aber nicht auf der Website anmelden, wenn sie sie vom Client aus starten. Wie können wir das machen?Aktivieren der einmaligen Anmeldung zwischen Desktop-Anwendung und Website

Der umgekehrte Weg ist weniger wichtig, wäre aber, wenn möglich, schön: Anmeldung auf der Website, ohne sich beim Rich Client anmelden zu müssen.

Antwort

4

Eine mögliche Lösung ist:

  • Anmeldung auf dem Rich-Client-
  • eine zufällige Token wird vom Server generiert und gespeichert againsed der angemeldeten Nutzer
  • Rich-Client erhält, dass Token vom Server
  • , die in der uRL verwendet wird, zeigt
  • auf der Website Token
  • zu dieser URL gehen (einen Link oder eine Schaltfläche aus der Rich-Client verwenden) wird der Benutzer automatisch anmelden und das Token
0

Sie könnten ein Token hinzufügen, um sie zu identifizieren, zu der URL, die die Website öffnet.

Sie werden eine gewisse Sicherheit zu dem Token hinzufügen: TTL, einen Hash, ein Salz

1

Stellen Sie sicher zurückgesetzt ein Timeout auf dem Token gibt es, sagen wir 2-5 Minuten, um sicherzustellen, dass es authentisch ist.

2

einfache Token-Lösungen leiden unter einem Konstruktionsfehler: Sie werden eine Art Geheimnis haben, das bei Bedarf rückentwickelt werden kann. Dies kann vollständig vermieden werden, wenn Dome korrekt ist.

Ich würde einen Challenge-Response-Algorithmus vorschlagen.

*) Benutzer loggs um Rich Client mit pw

*) aus Salz + Kennwort ein sha256 oder ähnlichen Hash berechnet wird. (Hash A)

*) Benutzer klicks "Gehe zur Website" Link.

*) Eine HTTP-Antwort wird gestartet (z. B. als Webservice), der Benutzer holt "get ticket number" für das Benutzerkonto. Dieses Ticket wird für eine kurze Zeit (einige Minuten)

*) Client berechnet Hash (Hasha + Ticket) HashB

*) endlich gültig sein - Browser www.example.org/?username=donkey wird darauf & Schlüssel = 99754106633f94d350db34d548d6091a

*) Server überprüft, ob sein berechneter Hash der gleiche ist wie der übergebene.

Vorteile dieser Methode:

-server nie Passwort kennt, nur gesalzen Hash.

-wird der Hash-Wert niemals über die Leitung übertragen -> keine Replay-Attacken.

+0

Was ist, wenn das Passwort auf der Desktop-Anwendung überhaupt nicht verfügbar ist und auf der Website nur ein unbekannter Hash des Passworts verfügbar ist? –

2

Wie wäre es mit OAuth?

Ein offenes Protokoll sichere API Zulassung in einem einfachen und Standardmethode von Desktop- und Web-Anwendungen zu ermöglichen.

Verwandte Themen