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
Massimiliano Pippi
April 10, 2015
Programming
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Protect a Django REST api with Oauth2
Lightning talk for pycon15
Massimiliano Pippi
April 10, 2015
More Decks by Massimiliano Pippi
See All by Massimiliano Pippi
Finding the needle: a deep dive into the rewriting of Haystack
masci
0
160
Project layout patterns in Go
masci
1
570
A Python and a Gopher walk into a bar - Embedding Python in Go. (dotGo2017)
masci
0
870
A Python and a Gopher walk into a bar - Embedding Python in Go.
masci
0
380
How to port your Python software to Go without people noticing
masci
0
280
Python - Go One Way
masci
0
260
How we stopped using the mouse and started drawing molecules with our fingertips: not the usual porting story
masci
0
160
Django 1.7 on App Engine
masci
0
260
If code is poetry, then documentation is prose
masci
0
210
Other Decks in Programming
See All in Programming
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
4
2.8k
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
120
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
470
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
130
What We Talk About When We Talk About XP
m_seki
2
390
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
690
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
200
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.8k
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
120
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
100
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
270
Featured
See All Featured
The SEO Collaboration Effect
kristinabergwall1
1
550
The Cost Of JavaScript in 2023
addyosmani
55
10k
Skip the Path - Find Your Career Trail
mkilby
1
220
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Test your architecture with Archunit
thirion
2
2.4k
How to Ace a Technical Interview
jacobian
281
24k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
600
For a Future-Friendly Web
brad_frost
183
10k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
430
The agentic SEO stack - context over prompts
schlessera
0
910
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Rails Girls Zürich Keynote
gr2m
96
14k
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