~/talk

OpenID Connect & OAuth 2.0 – Security Best Practices

Talkat NDC Security Oslo 2020 · 2020-01-22..01-24· [security]
slides:none on file

OAuth must drop risky flows: disable implicit & password grants and prefer authorization code + PKCE for all interactive clients. Require exact redirect URI matching and ban open redirects and third‑party code on callback pages; use state correlated to a signed cookie to prevent mix‑up attacks. For machine clients use sender‑constrained secrets (mutual TLS or signed client assertions). Treat browser tokens cautiously: consider same‑site cookies, short lifetimes, refresh‑token rotation, and adopt pushed authorization requests (PAR) where possible.

AI-written summary · about

  1. 0:00Intro
  2. 4:06Some Context...
  3. 9:16Simplified
  4. 9:56Attack Model (1)
  5. 14:40Implicit Flow Request
  6. 15:06Implicit Flow Response
  7. 16:22No more Password Grant
  8. 17:49Grand Unification
  9. 18:34Machine to Machine
  10. 18:57Client Authentication
  11. 21:09Sender Constrained Access Tokens w/ MTLS
  12. 24:47Interactive Applications
  13. 26:36Redirect URI Validation Attacks
  14. 29:19Credential Leakage via Referrer Headers
  15. 29:58Authorization Code Injection
  16. 30:58Mitigation: Proof key for Code Exchange
  17. 33:09Countermeasures Summary
  18. 33:59Mix Up Attack (Variant 1)
  19. 38:46How does ASP.NET Core prevent Mix Up Attacks?
  20. 40:35Public Clients
  21. 41:49Anti Pattern: Native Login Dialogs
  22. 43:33Using a browser with Code Flow + PKCE
  23. 44:03Different Approaches
  24. 48:05Anti-Forgery Protection
  25. 51:58Refresh Token Storage in Browsers
  26. 53:01What's next?
  27. 55:18JWT Secured Authorization Requests (JAR)
  28. 56:17Pushed Authorization Requests (1)
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.