/ / API založené na MVC - ako implementovať OAuth? - asp.net-mvc, api, oauth, dotnetopenauth

API založené na MVC - ako implementovať OAuth? - asp.net-mvc, api, oauth, dotnetopenauth

Snažím sa už niekoľko hodín, aby som OAuth pracoval s API, na ktorom pracujem, a samozrejme, že môj prístup musí byť nesprávny, pretože neustále narážam na mŕtve ciele.

Čo mám:
- rozhranie API implementované v .NET MVC, ktoré vracia výsledok dát buď ako XML, alebo JSON.
- Na použitie rozhrania API je potrebný kľúč rozhrania API.
- Web (X) ako backend pre správu kľúčov rozhrania API.
- Iná webová stránka (Y) s množstvom údajov, ktoré tento API extrahuje údaje.

Čo mám dostať:
- Schopnosť nechať klávesy API prístup k údajom používateľov z webových stránok (Y), ak to umožňujú sami prostredníctvom OAuth (1.0A).

Čo som sa pokúsil:
- Zatiaľ môj prístup bol použiťKnižnica DotNetOpenAuth, ale je to skoro všetko o tom, ako implementovať OpenId a niektoré triedy v obore názvov OAuth sa dokonca zdajú byť hardcoded k funkcii OpenId. Takže som sa snažil zistiť, čo sa deje v príkladoch, ktoré používajú OpenId, a zistiť, či môžem použiť časť z nich na implementáciu OAuth bez OpenId.
- Rôzne prístupy zahŕňajú aj na serverinačítať "UnauthorizedTokenRequest" a vrátiť ho prostredníctvom služby ServiceProvider.Channel.PrepareResponse (unauthorizedTokenRequest) .AsActionResult (), ktorá sa z nejakého dôvodu pokúša pridať dve hodnoty nonce a časovej značky k odpovedi, ktorá zlyhá a preskočí, stále odpovedá, že nie som schopný čítať na konci klienta.

Takže myslím, moja otázka naozaj je:

  1. Existuje sprievodca / dokumentácia, ktorá vám povieaké časti knižnice DotNetOpenAuth by som mal používať na strane servera a kedy by sa mali používať na implementáciu OAuth na serveri MVC, ktorý nie je hardcoded pre OpenId, pretože ani jedna z webových stránok (X ani Y ) podporuje OpenId?
  2. Mala by som radšej použiť inú knižnicu, ak sa nepoužijem na OpenId, pretože DotNetOpenAuth sa najviac zameriava?
  3. Všetky ostatné prístupy, ktoré by vyhovovali mojim potrebám, sú veľmi vítané.

Vopred ďakujem!
- Johny, Dánsko

odpovede:

4 pre odpoveď č. 1

DotNetOpenAuth podporuje OpenID, OAuth a InfoCard pri použití spolu a oddelene. Zdá sa, že to, čo vy vybudujete, vyhovuje tomu, čo ukáže vzorka DotNetOpenAuth "OAuthServiceProvider" Pravda, že táto vzorka používa OpenID na prihlásenie používateľov, ale môžete úplne ignorovať stránku login.aspx vo vzorke a úplne oddeliť od OpenID Používanie OAuth bez OpenID je úplne podporované.

Pár metód súvisiacich s OpenID v triedach OAuth slúži iba na podporu rozšírenia OpenID OpenID OAuth, ktoré sa nevzťahuje na vašu situáciu, takže ju môžete ignorovať.

Čo sa týka vášho dvojnásobného dodatočného problému, ktorý ste videli, niekedy sa stáva, že poskytovateľ služieb nevhodne dva moduly potvrdzujúce prichádzajúce požiadavky OAuth, každýpotvrdenie platnosti, a preto druhý modul vždy odmieta každú požiadavku. Môžete skontrolovať, či to spôsobuje váš problém. Inak skontrolujte, či nezmenená vzorka pracuje pre vás, a ak áno, porovnajte to, čo robí s tým, čo robíte, aby ste zistili, čo sa môže zhoršiť. Aktivácia protokolovania často tiež pomáha.