2. Problem
1 Applikationer som vill komma ˚at resurser som tillh¨or en
anv¨andare p˚a en extern server beh¨over autentisera sig med
anv¨andarens inloggningsuppgifter1
2 Det ¨ar sv˚art f¨or anv¨andaren att begr¨ansa vilka resurser en viss
applikation har tillg˚ang till
3 Anv¨andaren m˚aste byta l¨osenord f¨or att bryta en applikations
tillg˚ang till resurserna
1
L¨osenord i klartext <3
4. F¨or webbutvecklare, tl;dr; OAuth2?
1 Anv¨anda annan leverant¨or f¨or att logga in → Slippa l¨osenord
2 APIer! Google, GitHub, Facebook, et.c.
3 OAuth2 ≈ OpenID Connect
5. Nyckelbegrepp
Resurs¨agare I normalfallet, anv¨andaren
Resursserver Server med resurs¨agarens resurser
Klient Applikation som f¨ors¨oker n˚a resurser
Auktoriseringsserver Server f¨or att autentisera klienten
Auktoriseringsf¨orfr˚agan Klienten ber resurs¨agaren om en grant
Auktoriseringsgrant Klienten byter ut mot en Accesstoken
Accesstoken Nyckeln f¨or att komma ˚at resurser
7. H¨amta en accesstoken – Anrop
Klienten instruerar resurs¨agaren att med en user-agent2 g˚a in p˚a en
specifik auktoriseringssida.
User-Agent → Auktoriseringsserver
1 GET /authorize?response_type=code&client_id=s6BhdRkqt3&
state=xyz&redirect_uri=https%3A%2F%2Fclient%2Eexample
%2Ecom%2Fcb HTTP/1.1
2 Host: server.example.com
2
User-Agent ¨ar motsvarande en webbl¨asare
8. H¨amta en accesstoken – Anrop
Auktoriseringsserver → User-Agent
1 HTTP/1.1 302 Found
2 Location: https://client.example.com/cb?code=
SplxlOBeZQQYbYS6WxSbIA&state=xyz
User-Agent → Klient
GET /cb?code=SplxlOBeZQQYbYS6WxSbIA&state=xyz
10. Basic Authorization i OAuth2?
Klienten auktoriserar sig mot auktoriseringsservern med hj¨alp av
basic auth
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
13. Komma ˚at en resurs med en token
1 Beror p˚a tokentyp
2 Bearer token-formatet beskrivs av RFC6750
3 RFC6749 n¨amner ¨aven OAuth-HTTP-MAC3
1 GET /resource/1 HTTP/1.1
2 Host: example.com
3 Authorization: Bearer mF_9.B5f-4.1JqM
3
Fortfarande i utkastsstadiet
14. Hur l¨ange lever en Accesstoken
1 Livsl¨angden p˚a en accesstoken anges eventuellt av
expires in-variabeln fr˚an auktoriseringsservern
2 Ny accesstoken kan h¨amtas med en refreshtoken
3 Resurs¨agaren kan dra in en klients accesser
1 {
2 · · ·
3 "expires_in":3600,
4 "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
5 · · ·
6 }
15. R¨attigheter
1 Klienten kan inkludera en variabel scope i sin
auktoriseringsf¨orfr˚aga
2 scope ¨ar bara en mellanslagsseparerad lista
3 Auktoriseringsservern ¨ar fri att tolka scope hur den vill
16. tl;dr;
1 OAuth2 hj¨alper dina anv¨andare att logga in och dig att
anv¨anda deras externa resurser
2 RFC6749 f˚ar OAuth2 att verka jobbigare ¨an det ¨ar i
verkligheten