2014-06-26 4 views
6

Sto cercando di autorizzare gli utenti ad accedere ad alcune risorse dalla mia API framework di Django REST usando Oauth2.Django REST Framework - OAuth2 Consumer API da provider esterno

La maggior parte delle risposte su Oauth2 e API si occupano di rendere l'API un provider.

Ma ho intenzione di condividere un provider Oauth2 con molte API REST e non riesco a capire come utilizzare lo (non come fornire Oauth2).

Non ho idea di come un utente possa accedere al provider SSO e quindi comunicare il suo token alla mia API di consumo, che deve autenticare gli utenti contro il mio provider (recuperando le sue informazioni, principalmente autorizzazioni).

Qualcuno ha idea di come utilizzare Oauth2 dal framework Rango di Django?

Figura:

[utente] ->[My API] < -> [fornitore OAuth2 (con django-OAuth-provider)] < -> [Directory/Niente Attivo]

+0

Sto affrontando lo stesso problema e stavo per fare la stessa identica domanda. Sembra che dovrei implementare un qualche tipo di autenticazione personalizzata, ma non riesco a trovare da nessuna parte come un servizio di risorse (l'API in questo caso) convalida il token contro il servizio che lo ha creato. Voglio dire, la mia API riceve il token, quindi come dovrei chiedere al servizio che lo ha creato se è valido? Usando django_oauth_toolkit e non fornisce alcun endpoint che sembra utile per convalidare un token. – gepatino

risposta

4

Guardando il codice https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/authentication.py#L290 sembra proprio impossibile. Il framework django-rest accede internamente alle tabelle del database del provider per controllare i token e autenticare le richieste utilizzando questi dati.

Che per me blocca in qualche modo lo scopo di OAuth, ma eccoci qui.

+1

Sarei curioso di sapere se c'è stato qualche aggiornamento a questo. Costringere sempre il provider OAuth ad essere sulla stessa macchina del client sembra un'idea piuttosto triste, e in realtà è una sorta di sconfitte metà dello scopo di OAuth. –

+0

Non è cambiato nulla. L'unico modo per utilizzare il provider remoto è scrivere la propria sottoclasse di autenticazione. – zgoda

1

ho trovato queste domande relative, che conferma quello che ho pensato è verificato un errore di interpretazione da parte mia:

In sostanza, il desn't standard definiscono tale caratteristica ... è incredibile, a condizione che molte persone colpiranno questo punto prima o poi.

La cosa più strana è che non ho trovato nessun addon di django per fare questo ... siamo noi i primi due che hanno bisogno di autenticare più di una API usando lo stesso Auth Server?