Ich habe ein Produkt mit einer einfachen REST-API, sodass Benutzer des Produkts direkt in die Produktfunktionen integriert werden können, ohne meine Webbenutzeroberfläche zu verwenden.
Vor kurzem haben verschiedene Drittanbieter Interesse an der Integration ihrer Desktop-Clients in die API geweckt, damit Benutzer meines Produkts mit dieser Drittanbieteranwendung auf ihre Daten zugreifen können.
Ich habe gesehen, dass Anwendungen, die Twitter verwenden möchten, sich über eine von Twitter gehostete Anmeldeseite authentifizieren, die eine bestimmte Anwendungsberechtigung für den Zugriff auf die Daten dieses Benutzers erteilt. Sie klicken auf die Schaltfläche "Zulassen" oder "Verweigern" und der Authentifizierungsvorgang ist abgeschlossen. Facebook verwendet den gleichen Mechanismus wie ich es am besten beurteilen kann.
Nach weiteren Untersuchungen scheint dies OAuth in Aktion zu sein, und da meine API .NET-basiert ist, denke ich, ich sollte DotNetOpenAuth verwenden und einen ähnlichen Mechanismus bereitstellen. Leider sind die Beispiele (wenn überhaupt) nur spärlich dokumentiert, und die einzigen Tutorials, die ich online finden kann, scheinen darauf ausgerichtet zu sein, Ihnen dabei zu helfen, Ihren Benutzern einen Anmeldemechanismus bereitzustellen, damit sie sich über einen Drittanbieter auf Ihrer Website anmelden können.
Was ich wirklich gerne tun würde, ist, dass meine REST-API die gesamte Kernauthentifizierung und Geschäftslogik für meine Webanwendung übernimmt und dass meine Webanwendung im Wesentlichen eine andere Anwendung ist, die die API nur über OAuth verwendet. Benutzer würden sich auf der Website entweder direkt mit ihrem Benutzernamen und Passwort oder über einen Drittanbieter wie MyOpenID oder Facebook authentifizieren, und dann würde die Website das zurückgegebene Token irgendwie zur Authentifizierung gegen die REST-API verwenden.
Grundsätzlich sieht es so aus, als ob ich meine API brauche, um einen OAuth-Dienst zu hosten, aber auch Benutzer, die einen OAuth-Dienst eines Drittanbieters verwenden. Ich kann nicht anders, als zu glauben, ich habe nicht genug Verständnis für OAuth, um zu entscheiden, ob ich Dinge überkompliziere oder ob das, was ich versuche, eine gute oder schlechte Art ist, Dinge zu tun.
Kann mir jemand zumindest einen umfassenden Überblick über die Schritte geben, die ich unternehmen muss, oder was ich beachten sollte, um dies zu erreichen? Oder zeigen Sie mir einige Tutorials? Oder meinen Vorschlag sprengen und mir sagen, dass ich (architektonisch) alles falsch mache?