Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Protect a Django REST api with Oauth2
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Massimiliano Pippi
April 10, 2015
Programming
0
190
Protect a Django REST api with Oauth2
Lightning talk for pycon15
Massimiliano Pippi
April 10, 2015
Tweet
Share
More Decks by Massimiliano Pippi
See All by Massimiliano Pippi
Finding the needle: a deep dive into the rewriting of Haystack
masci
0
120
Project layout patterns in Go
masci
1
530
A Python and a Gopher walk into a bar - Embedding Python in Go. (dotGo2017)
masci
0
820
A Python and a Gopher walk into a bar - Embedding Python in Go.
masci
0
330
How to port your Python software to Go without people noticing
masci
0
250
Python - Go One Way
masci
0
230
How we stopped using the mouse and started drawing molecules with our fingertips: not the usual porting story
masci
0
130
Django 1.7 on App Engine
masci
0
220
If code is poetry, then documentation is prose
masci
0
180
Other Decks in Programming
See All in Programming
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
120
朝日新聞のデジタル版を支えるGoバックエンド ー価値ある情報をいち早く確実にお届けするために
junkiishida
1
140
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
340
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
120
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
310
あなたはユーザーではない #PdENight
kajitack
3
150
AIに仕事を丸投げしたら、本当に楽になれるのか
dip_tech
PRO
0
120
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
22
7.7k
今から始めるClaude Code超入門
448jp
8
9.3k
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作った話 / OSC2026Osaka
tsutsui
1
110
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
7
1k
Gemini for developers
meteatamel
0
110
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
170
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Amusing Abliteration
ianozsvald
0
110
First, design no harm
axbom
PRO
2
1.1k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.4k
For a Future-Friendly Web
brad_frost
182
10k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
55
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
62
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Transcript
Protect a Django REST API with OAuth2 Massimiliano Pippi @maxpippi
Introducing my friend Harold Let’s say we want to write
a timetracking web application y u not pushing? git push -f works lol
Backend recipe Django & Django REST Framework u can use
the new DRF3 generic views here wut?
Projects proliferation timetracker-backend timetracker-web timetracker-[android|ios] timetracker-desktop yep! I need an
app for my nokia 3210
How do we do access control? Third party apps want
to access our data as well! not ma problem can’t hear u
Common problems • Using user credentials inside the app is
a bad idea • The app might have full access to user account • User has to change his password to revoke the access
Multiple problems - one Solution The OAuth2 framework omg not
oauth again
Django OAuth Toolkit • Django 1.4 → 1.7 (1.8 coming
soon) • Python 2&3 • built on top of oauthlib, RFC 6749 compliant • DRF 2&3 integration https://github.com/evonove/django-oauth-toolkit
Batteries included • builtin views to register and manage OAuth2
applications • form view for user authorization lol I found what DRF stands for omg harold plz retire
Endpoints protection for the lazy • function views decorators @protected_resource()
def my_view(request): # A valid token is required to get here… • generic class based views class ApiEndpoint(ProtectedResourceView): def get(self, request, *args, **kwargs): return HttpResponse('Hello, OAuth2!')
DRF ootb integration REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'oauth2_provider.ext.rest_framework.OAuth2Authentication', )
}
Future plans - Help needed! OAuth1 support Resource and Authorization
server components separation https://github.com/evonove/django-oauth-toolkit +1 for my own PR