Zastosowanie protokołu OAuth w aplikacjach Django/Python
OAuth to otwarty protokół pozwalający na bezpieczną autoryzację za pomocą API dla aplikacji desktopowych, mobilnych i aplikacji internetowych. OAuth pozwala użytkownikowi dać dostęp do jego informacji, opcji na stronie A (dostawcy OAuth, np. Twitter) innej stronie B (konsumentowi) bez podawania pełnych danych uwierzytelniających (np. bez podawania loginu i hasła). Standard te obecnie jest implementowany na coraz większej ilości strony, jako że pozwala im wystawiać bezpieczniejsze API, jak i dające pewność użytkownikami co zewnętrzna strona z nimi zrobi. Przykładowa prosta aplikacja webowa przedstawiona jest na twitteroauth.appspot.com - gdzie poprzez OAuth udostępniamy stronie ostatnie tweety z naszego konta na Tweeterze.
Lista dostawców, czyli stron udostępniających API poprzez OAuth jest dość długa. Na liście tej znajdziemy Twittera, Google, MySpace, czy także Gadu Gadu. Dla twórców konsumentów - stron korzystających z takiego API dostępne jest wiele bibliotek dla różnych języków programistycznych.
OAuth i Python
Oprócz prostej biblioteki na oauth.googlecode.com istnieje wiele bibliotek nakładek na poszczególnych dostawców (np. Twittera). Wystarczy przeszukać Githuba, googlecode.com i inne serwisy tego typu. Przykładowo dla Django można użyć aplikacji django-twitterauth.django-twitterauth w Django
- Zaczynamy od zarejestrowania klienta/konsumenta na http://twitter.com/oauth_clients. Podajemy nazwę naszej "aplikacji", a także jej typ (aplikacja webowa) i adres callback - adres URL na naszej stronie, na który zostanie przekierowany użytkownik po pomyślnej autoryzacji na stronie Twittera.
- Po udanym zarejestrowaniu aplikacji wygenerowany zostanie klucz Consumer key oraz Consumer secret, a także podane zostaną podstawowe adresy URL API potrzebne przy wykorzystaniu API:
- Request token URL: http://twitter.com/oauth/request_token
- Access token URL: http://twitter.com/oauth/access_token
- Authorize URL: http://twitter.com/oauth/authorize
- Pobieramy kod aplikacji z Githuba:
git clone git://github.com/rcrowley/django-twitterauth.git
- Skopiuj katalog djang-twitterauth do katalogu z twoim projektem Django. Edytuj settings.py i dodaj aplikację do INSTALLED_APPS, doda ścieżkę do szablonów aplikacji w TEMPLATE_DIRS.
- Dodaj w settings.py:
TWITTERAUTH_KEY = 'twój klucz' TWITTERAUTH_SECRET = 'twój secret'
- Będziesz musiał pewnie także edytować szablony aplikacji i zmienić nazwy bloków, rozszerzanego szablonu.
- Do urls.py dodaj mapowanie na widoki, np:
url(r'^info/?$', 'auth.views.info', name='auth_info'), url(r'^login/?$', 'auth.views.login', name='auth_login'), # to musi pasować do podanego callbacka w konfiguracji na Twitterze url(r'^login/callback/?$', 'auth.views.callback', name='auth_callback'), url(r'^logout/?$', 'auth.views.logout', name='auth_logout'),
Comment article