2014-06-26 9 views
6

Próbuję autoryzować użytkownikom dostęp do niektórych zasobów z mojego interfejsu API RMS Django przy użyciu Oauth2.Django REST Framework - API konsumenta OAuth2 od zewnętrznego dostawcy

Większość odpowiedzi na temat Oauth2 i API dotyczy udostępniania API.

Ale planuję udostępnić dostawcę Oauth2 z wieloma interfejsami REST API i nie mogę wymyślić, jak to skonsumować (nie jak zapewnić Oauth2).

Nie mam pojęcia, w jaki sposób użytkownik może się zalogować na SSO dostawcy, a następnie przekazać jego token do mojego interfejsu API, który musi uwierzytelniać użytkowników wobec mojego dostawcy (odzyskiwanie jego informacji, głównie autoryzacji).

Czy ktoś ma pojęcia, jak konsumować Oauth2 z frameworku Django REST?

Figura:

[User] ->[My API] < -> [dostawcą OAuth2 (z Django OAuth-provider)] < -> [Active Directory/coś]

+0

Mam do czynienia z tym samym problemem i miałem właśnie zadać to samo pytanie. Wygląda na to, że musiałbym wprowadzić jakieś niestandardowe uwierzytelnianie, ale nie mogę znaleźć nigdzie sposobu, w jaki usługa zasobów (w tym przypadku API) sprawdza token względem usługi, która go utworzyła. Mam na myśli, że moje API otrzymuje token, to jak mam zapytać o usługę, która go utworzyła, jeśli jest ważna? Korzystanie z django_oauth_toolkit i nie zapewnia żadnego punktu końcowego, który wydaje się przydatny do sprawdzenia poprawności tokena. – gepatino

Odpowiedz

4

Patrząc na kod na https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/authentication.py#L290 wydaje się po prostu niemożliwe. Django-rest-framework wewnętrznie uzyskuje dostęp do tabel bazy danych dostawcy, aby sprawdzić tokeny i uwierzytelnia żądania za pomocą tych danych.

Który dla mnie trochę pokonuje cel OAuth, ale oto idziemy.

+1

Byłbym ciekawy, czy jest jakaś aktualizacja do tego. Ciągłe zmuszanie dostawcy OAuth do tego samego komputera, na którym działa klient, wydaje się dość smutnym pomysłem i naprawdę niweczy połowę celu OAuth. –

+0

Nic się nie zmieniło. Jedynym sposobem na użycie zdalnego dostawcy jest napisanie własnej podklasy Authentication. – zgoda

1

Znalazłem te inne pytania, które potwierdza to, co uważałem za błąd interpretacja z mojej strony:

Zasadniczo średnia desn't zdefiniować taka funkcja ... jest niesamowita, pod warunkiem, że wiele osób osiągnie to prędzej czy później.

Co najdziwniejsze jest to, że nie mogłem znaleźć żadnego dodatku django, aby to zrobić ... czy jesteśmy pierwszymi dwoma, którzy muszą uwierzytelnić więcej niż jeden interfejs API przy użyciu tego samego serwera Auth?