2011-01-13 2 views
8

Ich erstelle eine Site aus der WCF-REST-Servicevorlage 40 (CS) aus den VS 2010-Online-Vorlagen. Es funktioniert großartig, aber ich muss es sichern.Wie stelle ich die oAuth-Authentifizierung für eine WCF-REST ein? C# Site

Ich muss Windows-, Linux- und iPhone-Apps unterstützen, daher scheint REST + oAuth eine gute Lösung zu sein, aber ich weiß nicht, wo ich anfangen soll.

Grundsätzlich muss ich Benutzernamen/Passwörter (um Hash natürlich) zu meiner Datenbank auflösen wie traditionelle Formulare Auth.

Antwort

9

OAuth überträgt keinen Benutzernamen/kein Kennwort. OAuth sendet einen OAuth-Header innerhalb des HTTP-Auth-Headers. Ihr Dienst muss dies herausholen und dann testen, um sicherzustellen, dass es gültig ist.

Der OAuth-Header enthält eine Reihe von Werten (timestamp, consumer_key, nonce) unverschlüsselt. Sie können diese unverschlüsselten Werte verwenden und den unverschlüsselten Schlüssel verwenden, um den geheimen Schlüssel nachzuschlagen, den Ihr Dienst zum Verschlüsseln dieser Werte verwendet, und sicherstellen, dass er mit der Signatur übereinstimmt, die auch im OAuth-Header enthalten ist. Wenn Ihre generierte Signatur mit der im OAuth-Header enthaltenen Signatur übereinstimmt, wissen Sie, dass die HTTP-Anforderung gut ist. Dann können Sie den Consumer-Key aus der Kopfzeile nehmen und ihn verwenden, um bei Bedarf den Benutzernamen zu sehen.

Siehe my post here. Denken Sie daran, dass es mehrere gute Bibliotheken gibt, um all das zu erleichtern, wie zum Beispiel DotNetOpenAuth.

+4

Ich muss wirklich nur weitermachen und ein OAuth-Verhalten für WCF schreiben ... –

Verwandte Themen