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
Ember and OAuth
Search
Matthew Rudy Jacobs
January 15, 2014
Technology
860
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ember and OAuth
A brief tour of OAuth2 and it's use with Ember and other Client-side frameworks
Matthew Rudy Jacobs
January 15, 2014
More Decks by Matthew Rudy Jacobs
See All by Matthew Rudy Jacobs
From Developer to Architect (and back again)
matthewrudy
3
250
Humans are Hard
matthewrudy
0
160
[Alpha] Humans Are Hard
matthewrudy
0
130
From Developer To Architect
matthewrudy
0
110
Git Commit Signing: Code we can trust?
matthewrudy
0
200
We Need To Talk About Postgres
matthewrudy
0
110
Coding as a Team At GoGoVan
matthewrudy
3
460
10 Years of Code
matthewrudy
0
130
Elixir - Part 1
matthewrudy
1
210
Other Decks in Technology
See All in Technology
文字起こし基盤の信頼性
abnoumaru
0
150
データ活用研修 問いの発見と仮説構築【MIXI 26新卒技術研修】
mixi_engineers
PRO
1
620
Claude Code並行開発環境の ムダ‧ムラ‧ムリを見直した話
muranakaaa
0
260
数値で見る Microsoft MVP 〜Spec Kit と GitHub Copilot Agent で作るデータ可視化ダッシュボード〜
yutakaosada
0
160
終末スローライフアプリ『LIVING with LIVLIES』運用を支える技術~不思議な生き物リヴリーの体を借りて、終末世界を冒険!世界観を支えるURP描画設計・量産パイプライン・AI活用について~
202409e2
0
110
人とエージェントが高め合う協業設計
kintotechdev
0
1.1k
MCPをつなげて作る組織横断のAIエージェント基盤
tsubakimoto_s
0
260
害獣害虫を自動判別! ペストコントロール支援ビジネス成功のヒント【SORACOM Discovery 2026】
soracom
PRO
0
120
NYC Summit 2026 におけるAmazon Bedrock AgentCore のアップデート
ren8k
1
260
実践が先生だった— 新卒サーバーエンジニア1年目のリアル
mixi_engineers
PRO
0
190
コンポーネント名には何を含めるべきなのか? / what-should-be-included-in-component-names
airrnot1106
0
170
データベース研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
1
630
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
1k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
470
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
190
The Limits of Empathy - UXLibs8
cassininazir
1
560
YesSQL, Process and Tooling at Scale
rocio
174
15k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
360
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Building Adaptive Systems
keathley
44
3.1k
Automating Front-end Workflow
addyosmani
1370
210k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Transcript
Ember & OAuth Matthew Rudy Jacobs Wednesday 15th January 2014
@ EmberLondon
@matthewrudy
cronycle.com
The Goal
Authenticate via a 3rd party
Obtain access to a 3rd party API
The Tool
OAuth2 http://tools.ietf.org/html/rfc6749
“The Road to Hell”?
Actually it’s alright
4 Different Flows otherwise known as “grant types”
4 Grant Types • Authorization Code • Implicit • Resource
Owner Password Credentials • Client Credentials
Authorization Code
Authorization Code
Authorization Code auth code access token /auth?code=abc123
Implicit
Implicit S3
Implicit S3 access token /auth#access_token=abc123
Password
Password
Password access token { access_token: “abc123” }
Client Credentials
Client Credentials
Implicit Grant Flow this is what we want!
ember-oauth2
None
Initiate the Auth
Sign in with Github
We have a token
Except we don’t!
This is not Implicit!
This is not Implicit! /callback?code=…
This is not Implicit! /callback?code=… /callback#access_token=…
Github doesn’t do Implicit Grant!
Github suggests you use passwords
TLDR; pure client-side OAuth is poorly supported
But what about a hybrid approach?
Authorization Code Flow (as an API) ❤️
Stick Ember in the middle
The Concept
GET /oauths/new {url: “https://github.com/auth?…”} https://github.com/auth?…
GET /oauths/new {url: “https://github.com/auth?…”} https://github.com/auth?… callback POST /oauths {access_token: “abc123”}
GET /oauths/new {url: “https://github.com/auth?…”} https://github.com/auth?… callback POST /oauths {access_token: “abc123”}
Hack it together!
OAuth API Client
Handled in a Route
Easy right?
Thanks
@matthewrudy