Ho un prodotto con un'API REST semplice in modo che gli utenti del prodotto possano integrarsi direttamente con le funzionalità del prodotto senza utilizzare la mia interfaccia utente web.
Di recente ho ricevuto interesse da varie terze parti sull'integrazione dei loro client desktop con l'API per consentire agli utenti del mio prodotto di accedere ai propri dati utilizzando tale applicazione di terze parti.
Ho visto che le applicazioni che desiderano utilizzare Twitter eseguono l'autenticazione utilizzando una pagina di accesso ospitata da Twitter che concede un'autorizzazione specifica all'applicazione per accedere ai dati dell'utente. Fai clic sul pulsante "Consenti" o "Nega" e il processo di autenticazione è completo. Facebook utilizza lo stesso meccanismo migliore che posso dire.
Dopo ulteriori ricerche, questo sembra essere OAuth in azione, e visto che la mia API è basata su .Net, sto pensando che dovrei usare DotNetOpenAuth e fornire un meccanismo simile. Sfortunatamente i campioni sono scarsamente documentati (se non del tutto) e gli unici tutorial che posso trovare online sembrano focalizzati sull'aiutarti a fornire un meccanismo di accesso per i tuoi utenti in modo che possano accedere al tuo sito Web utilizzando un fornitore di terze parti.
Quello che mi piacerebbe davvero fare è che la mia API REST gestisca tutta l'autenticazione di base e la logica aziendale per la mia applicazione Web e che, sotto il cofano, la mia applicazione Web sia essenzialmente un'altra applicazione che utilizza l'API tramite OAuth. Gli utenti effettuano l'autenticazione sul sito Web direttamente utilizzando il loro nome utente e password o tramite un fornitore di terze parti come MyOpenID o Facebook e quindi il sito Web utilizza in qualche modo il token restituito per autenticarsi rispetto all'API REST.
In pratica sembra che abbia bisogno della mia API per ospitare in qualche modo un servizio OAuth, ma anche che gli utenti utilizzino un servizio OAuth di terze parti. Non posso fare a meno di pensare che non ho abbastanza conoscenza di OAuth per decidere se sto complicando troppo le cose o se quello che sto cercando di fare è un modo buono o cattivo di fare le cose.
Qualcuno può darmi almeno un'ampia panoramica dei passi che devo intraprendere o cosa dovrei guardare per far sì che ciò accada? O indicarmi alcuni tutorial? O esplodere la mia proposta e dirmi che sto andando su questo (dal punto di vista architettonico) tutto sbagliato?