OAuth & OpenID Connect
Deep Dive
Copyright © 2018 Curity AB
By Travis Spencer, CEO
@travisspencer, @curityio
Agenda
Terminology & some basics
Common flows
Some more advanced, related specs
@travis / @curityio Copyright © 2018 Curity AB
Framework for other specifications
Request tokens from a token server
Present them to an API
Allows delegated access, revocation, no
password sharing
Obsoletes OAuth 1.0a
@travis / @curityio Copyright © 2018 Curity AB
OAuth Actors
1. Resource Owner (RO)
2. Client
3. Authorization Server (AS)
4. Resource Server (RS) (i.e., API)
Get a token
Use a token
@travis / @curityio Copyright © 2018 Curity AB
Request, Authenticate & Consent
Request Access Login Consent
@travis / @curityio Copyright © 2018 Curity AB
User is redirected to
OAuth server
Code Flow
APIs & microservices
@travis / @curityio Copyright © 2018 Curity AB
User logs in and
delegates access
Code Flow
APIs & microservices
@travis / @curityio Copyright © 2018 Curity AB
Code Flow
Short-lived access code
is issued to client
APIs & microservices
@travis / @curityio Copyright © 2018 Curity AB
Code Flow
Code is exchanged for an
access token
APIs & microservices
@travis / @curityio Copyright © 2018 Curity AB
Code Flow
Access token can be
used to call APIs
APIs & microservices
@travis / @curityio Copyright © 2018 Curity AB
Scopes
• Like permissions
• Scopes specify extent of tokens’ usefulness
• Listed on consent UI (if shown)
• No standardized scopes
@travis / @curityio Copyright © 2018 Curity AB
Kinds of Tokens
Like a session
Refresh TokensAccess Tokens
Like a Password
Used to secure API calls Used to get new access tokens
@travis / @curityio Copyright © 2018 Curity AB
Profiles of Tokens
Holder of Key
HoK tokens are like
credit cards
Bearer
Bearer tokens are like
cash
$
@travis / @curityio Copyright © 2018 Curity AB
Types of Tokens
• WS-Security & SAML
• Custom
• Home-grown
• Oracle Access Manager
• SiteMinder
• CBOR Web Tokens (CWT)
• JWT
@travis / @curityio Copyright © 2018 Curity AB
JWT =
JWS/E/K/A@travis / @curityio Copyright © 2018 Curity AB
JWT Type Tokens
• Pronounced like the English word “jot”
• Lightweight tokens passed in HTTP headers & query strings
• Encoded as JSON
• Compact
• Encrypted, signed, or neither
• Not the only kind of token allowed by OAuth
@travis / @curityio Copyright © 2018 Curity AB
Passing Tokens
By Value
User attributes are in
the token
By Reference
User attributes are
referenced by an
identifier
@travis / @curityio Copyright © 2018 Curity AB
Improper Usage of OAuth
Not for authentication
Not for federation
Not really for authorization
@travis / @curityio Copyright © 2018 Curity AB
Proper Usage or OAuth
For delegation
@travis / @curityio Copyright © 2018 Curity AB
Profiles: Basic, Implicit, Hybrid flow, FAPI
Form POST response model
Dynamic client registration
Logout
Session management
Discovery
@travis / @curityio Copyright © 2018 Curity AB
Copyright Curity AB 2017
OIDC & OAuth versions
WebFinger
Well-known URIs
Discovery Metadata
Copyright Curity AB 2017
OpenID Connect Examples
Get user info using
access token
OAuth AS / OpenID
Provider RP / Client
Browser
Access code
Send code to get
access token
Access token & ID token
Check audience
restriction of ID token
Request login,
providing “openid”
scope & user info
scopes
User info
@travis / @curityio Copyright © 2018 Curity AB
ID Token is for the Client
• Access token is for API
• ID token is for client
• ID token provides client with info about
• Intended client recipient
• Username
• Credential used to login
• Issuer of token
• Expiration time
@travis / @curityio Copyright © 2018 Curity AB
User Info Endpoint
• Token issuance and user discovery endpoint
• Authenticate using access token issued by
OpenID Provider
• Output depends on requested and
authorized scopes
• sub claim must match sub claim in ID token
@travis / @curityio Copyright © 2018 Curity AB
For High Security
PoP
Token binding
Proof Key for Code Exchange (PKCE or “pixie”)
Mutual TLS Profile for OAuth
@travis / @curityio Copyright © 2018 Curity AB
Around 50 RFCs, drafts & other specs
26
Hopefully this has been a helpful overview to start digging deeper
@travis / @curityio Copyright © 2018 Curity AB
Visit curity.io and stop by our booth
@travis / @curityio Copyright © 2018 Curity AB

More Related Content

PDF
Introduction to OpenID Connect
PDF
OpenID Connect Explained
PPT
OAuth 2.0 and OpenId Connect
PDF
Introduction to kubernetes
PDF
OAuth 2.0
PPTX
IdP, SAML, OAuth
ODP
OAuth2 - Introduction
PDF
Graphql
Introduction to OpenID Connect
OpenID Connect Explained
OAuth 2.0 and OpenId Connect
Introduction to kubernetes
OAuth 2.0
IdP, SAML, OAuth
OAuth2 - Introduction
Graphql

What's hot (20)

PPTX
An Introduction to OAuth 2
PPTX
OAuth2 + API Security
PDF
Demystifying OAuth 2.0
PDF
OAuth 2.0 and OpenID Connect
PPTX
OpenID Connect: An Overview
PPTX
Intro to OAuth2 and OpenID Connect
PDF
Stateless Auth using OAuth2 & JWT
PPTX
Secure your app with keycloak
PDF
SAML VS OAuth 2.0 VS OpenID Connect
PPTX
OAuth 2
PDF
Introduction to SAML 2.0
PPTX
An Introduction to OAuth2
PPTX
OpenId Connect Protocol
PPTX
Keycloak for Science Gateways - SGCI Technology Sampler Webinar
PDF
Demystifying SAML 2.0,Oauth 2.0, OpenID Connect
PPTX
OpenID for Verifiable Credentials
PPTX
Building secure applications with keycloak
PPTX
Building an Authorization Solution for Microservices Using Neo4j and OPA
PPTX
Azure AD Presentation - @ BITPro - Ajay
An Introduction to OAuth 2
OAuth2 + API Security
Demystifying OAuth 2.0
OAuth 2.0 and OpenID Connect
OpenID Connect: An Overview
Intro to OAuth2 and OpenID Connect
Stateless Auth using OAuth2 & JWT
Secure your app with keycloak
SAML VS OAuth 2.0 VS OpenID Connect
OAuth 2
Introduction to SAML 2.0
An Introduction to OAuth2
OpenId Connect Protocol
Keycloak for Science Gateways - SGCI Technology Sampler Webinar
Demystifying SAML 2.0,Oauth 2.0, OpenID Connect
OpenID for Verifiable Credentials
Building secure applications with keycloak
Building an Authorization Solution for Microservices Using Neo4j and OPA
Azure AD Presentation - @ BITPro - Ajay
Ad

Similar to OAuth & OpenID Connect Deep Dive (20)

PDF
CIS 2015 Extreme OAuth - Paul Meyer
PDF
Consideration on Holder-of-Key Bound Token < from Financial-grade API (FAPI) ...
PDF
Secure your APIs using OAuth 2 and OpenID Connect
PDF
Launching a Successful and Secure API
PDF
Oauth Nightmares Abstract OAuth Nightmares
PDF
CIS13: Introduction to OAuth 2.0
PDF
What the Heck is OAuth and OIDC - UberConf 2018
PDF
JHipster and Okta - JHipster Virtual Meetup December 2020
PDF
170724 JP/UK Open Banking Summit English Translation
PPTX
Standard Based API Security, Access Control and AI Based Attack - API Days Pa...
PPTX
An Authentication and Authorization Architecture for a Microservices World
PPTX
Oauth2 and OWSM OAuth2 support
PDF
Auth proxy pattern on Kubernetes
PDF
What the Heck is OAuth and OIDC - Denver Developer Identity Workshop 2020
PPTX
APIs_ An Introduction.pptx
PPTX
2022 APIsecure_Why Assertion-based Access Token is preferred to Handle-based ...
PPTX
Why Assertion-based Access Token is preferred to Handle-based one?
PDF
CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe...
PDF
Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC ...
PDF
OAuth in the Real World featuring Webshell
CIS 2015 Extreme OAuth - Paul Meyer
Consideration on Holder-of-Key Bound Token < from Financial-grade API (FAPI) ...
Secure your APIs using OAuth 2 and OpenID Connect
Launching a Successful and Secure API
Oauth Nightmares Abstract OAuth Nightmares
CIS13: Introduction to OAuth 2.0
What the Heck is OAuth and OIDC - UberConf 2018
JHipster and Okta - JHipster Virtual Meetup December 2020
170724 JP/UK Open Banking Summit English Translation
Standard Based API Security, Access Control and AI Based Attack - API Days Pa...
An Authentication and Authorization Architecture for a Microservices World
Oauth2 and OWSM OAuth2 support
Auth proxy pattern on Kubernetes
What the Heck is OAuth and OIDC - Denver Developer Identity Workshop 2020
APIs_ An Introduction.pptx
2022 APIsecure_Why Assertion-based Access Token is preferred to Handle-based ...
Why Assertion-based Access Token is preferred to Handle-based one?
CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe...
Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC ...
OAuth in the Real World featuring Webshell
Ad

More from Nordic APIs (20)

PPTX
How to Choose the Right API Platform - We Have the Tool You Need! - Mikkel Iv...
PPTX
Bulletproof Backend Architecture: Building Adaptive Services with Self-Descri...
PDF
Implementing Zero Trust Security in API Gateway with Cilium - Pubudu Gunatila...
PPTX
Event-Driven Architecture the Cloud-Native Way - Manuel Ottlik, HDI Global SE
PPTX
Navigating the Post-OpenAPI Era with Innovative API Design Frameworks - Danie...
PDF
Using Typespec for Open Finance Standards - Chris Wood, Ozone API
PPTX
Schema-first API Design Using Typespec - Cailin Smith, Microsoft
PPTX
Avoiding APIpocalypse; API Resiliency Testing FTW! - Naresh Jain, Xnsio
PPTX
How to Build an Integration Platform with Open Source - Magnus Hedner, Benify
PPTX
API Design First in Practise – An Experience Report - Hari Krishnan, Specmatic
PPTX
The Right Kind of API – How To Choose Appropriate API Protocols and Data Form...
PPTX
Why Frequent API Hackathons Are Key to Product Market Feedback and Go-to-Mark...
PPTX
Maximizing API Management Efficiency: The Power of Shifting Down with APIOps ...
PPTX
APIs Vs Events - Bala Bairapaka, Sandvik AB
PPTX
GraphQL in the Post-Hype Era - Daniel Hervas, Reckon Digital
PPTX
From Good API Design to Secure Design - Axel Grosse, 42Crunch
PPTX
API Revolution in IoT: How Platform Engineering Streamlines API Development -...
PPTX
Unlocking the ROI of API Platforms: What Success Actually Looks Like - Budhad...
PDF
Increase Your Productivity with No-Code GraphQL Mocking - Hugo Guerrero, Red Hat
PPTX
Securely Boosting Any Product with Generative AI APIs - Ruben Sitbon, Theodo ...
How to Choose the Right API Platform - We Have the Tool You Need! - Mikkel Iv...
Bulletproof Backend Architecture: Building Adaptive Services with Self-Descri...
Implementing Zero Trust Security in API Gateway with Cilium - Pubudu Gunatila...
Event-Driven Architecture the Cloud-Native Way - Manuel Ottlik, HDI Global SE
Navigating the Post-OpenAPI Era with Innovative API Design Frameworks - Danie...
Using Typespec for Open Finance Standards - Chris Wood, Ozone API
Schema-first API Design Using Typespec - Cailin Smith, Microsoft
Avoiding APIpocalypse; API Resiliency Testing FTW! - Naresh Jain, Xnsio
How to Build an Integration Platform with Open Source - Magnus Hedner, Benify
API Design First in Practise – An Experience Report - Hari Krishnan, Specmatic
The Right Kind of API – How To Choose Appropriate API Protocols and Data Form...
Why Frequent API Hackathons Are Key to Product Market Feedback and Go-to-Mark...
Maximizing API Management Efficiency: The Power of Shifting Down with APIOps ...
APIs Vs Events - Bala Bairapaka, Sandvik AB
GraphQL in the Post-Hype Era - Daniel Hervas, Reckon Digital
From Good API Design to Secure Design - Axel Grosse, 42Crunch
API Revolution in IoT: How Platform Engineering Streamlines API Development -...
Unlocking the ROI of API Platforms: What Success Actually Looks Like - Budhad...
Increase Your Productivity with No-Code GraphQL Mocking - Hugo Guerrero, Red Hat
Securely Boosting Any Product with Generative AI APIs - Ruben Sitbon, Theodo ...

Recently uploaded (20)

PDF
Ragic Data Security Overview: Certifications, Compliance, and Network Safegua...
PDF
Software Development Company - swapdigit | Best Mobile App Development In India
PPTX
AI Tools Revolutionizing Software Development Workflows
PDF
Enscape 3D Crack + With 2025 Activation Key free
PDF
solman-7.0-ehp1-sp21-incident-management
PDF
WhatsApp Chatbots The Key to Scalable Customer Support.pdf
PDF
Coding with GPT-5- What’s New in GPT 5 That Benefits Developers.pdf
PPTX
Beige and Black Minimalist Project Deck Presentation (1).pptx
PPTX
MCP empowers AI Agents from Zero to Production
PDF
Streamlining Project Management in Microsoft Project, Planner, and Teams with...
PDF
DOWNLOAD—IOBit Uninstaller Pro Crack Download Free
PDF
Multiverse AI Review 2025_ The Ultimate All-in-One AI Platform.pdf
PDF
Difference Between Website and Web Application.pdf
PDF
MaterialX Virtual Town Hall - August 2025
PPTX
Presentation - Summer Internship at Samatrix.io_template_2.pptx
PPTX
Relevance Tuning with Genetic Algorithms
PDF
IObit Driver Booster Pro Crack Latest Version Download
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
PDF
Science is Not Enough SPLC2009 Richard P. Gabriel
PPT
introduction of sql, sql commands(DD,DML,DCL))
Ragic Data Security Overview: Certifications, Compliance, and Network Safegua...
Software Development Company - swapdigit | Best Mobile App Development In India
AI Tools Revolutionizing Software Development Workflows
Enscape 3D Crack + With 2025 Activation Key free
solman-7.0-ehp1-sp21-incident-management
WhatsApp Chatbots The Key to Scalable Customer Support.pdf
Coding with GPT-5- What’s New in GPT 5 That Benefits Developers.pdf
Beige and Black Minimalist Project Deck Presentation (1).pptx
MCP empowers AI Agents from Zero to Production
Streamlining Project Management in Microsoft Project, Planner, and Teams with...
DOWNLOAD—IOBit Uninstaller Pro Crack Download Free
Multiverse AI Review 2025_ The Ultimate All-in-One AI Platform.pdf
Difference Between Website and Web Application.pdf
MaterialX Virtual Town Hall - August 2025
Presentation - Summer Internship at Samatrix.io_template_2.pptx
Relevance Tuning with Genetic Algorithms
IObit Driver Booster Pro Crack Latest Version Download
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Science is Not Enough SPLC2009 Richard P. Gabriel
introduction of sql, sql commands(DD,DML,DCL))

OAuth & OpenID Connect Deep Dive

  • 1. OAuth & OpenID Connect Deep Dive Copyright © 2018 Curity AB By Travis Spencer, CEO @travisspencer, @curityio
  • 2. Agenda Terminology & some basics Common flows Some more advanced, related specs @travis / @curityio Copyright © 2018 Curity AB
  • 3. Framework for other specifications Request tokens from a token server Present them to an API Allows delegated access, revocation, no password sharing Obsoletes OAuth 1.0a @travis / @curityio Copyright © 2018 Curity AB
  • 4. OAuth Actors 1. Resource Owner (RO) 2. Client 3. Authorization Server (AS) 4. Resource Server (RS) (i.e., API) Get a token Use a token @travis / @curityio Copyright © 2018 Curity AB
  • 5. Request, Authenticate & Consent Request Access Login Consent @travis / @curityio Copyright © 2018 Curity AB
  • 6. User is redirected to OAuth server Code Flow APIs & microservices @travis / @curityio Copyright © 2018 Curity AB
  • 7. User logs in and delegates access Code Flow APIs & microservices @travis / @curityio Copyright © 2018 Curity AB
  • 8. Code Flow Short-lived access code is issued to client APIs & microservices @travis / @curityio Copyright © 2018 Curity AB
  • 9. Code Flow Code is exchanged for an access token APIs & microservices @travis / @curityio Copyright © 2018 Curity AB
  • 10. Code Flow Access token can be used to call APIs APIs & microservices @travis / @curityio Copyright © 2018 Curity AB
  • 11. Scopes • Like permissions • Scopes specify extent of tokens’ usefulness • Listed on consent UI (if shown) • No standardized scopes @travis / @curityio Copyright © 2018 Curity AB
  • 12. Kinds of Tokens Like a session Refresh TokensAccess Tokens Like a Password Used to secure API calls Used to get new access tokens @travis / @curityio Copyright © 2018 Curity AB
  • 13. Profiles of Tokens Holder of Key HoK tokens are like credit cards Bearer Bearer tokens are like cash $ @travis / @curityio Copyright © 2018 Curity AB
  • 14. Types of Tokens • WS-Security & SAML • Custom • Home-grown • Oracle Access Manager • SiteMinder • CBOR Web Tokens (CWT) • JWT @travis / @curityio Copyright © 2018 Curity AB
  • 15. JWT = JWS/E/K/A@travis / @curityio Copyright © 2018 Curity AB
  • 16. JWT Type Tokens • Pronounced like the English word “jot” • Lightweight tokens passed in HTTP headers & query strings • Encoded as JSON • Compact • Encrypted, signed, or neither • Not the only kind of token allowed by OAuth @travis / @curityio Copyright © 2018 Curity AB
  • 17. Passing Tokens By Value User attributes are in the token By Reference User attributes are referenced by an identifier @travis / @curityio Copyright © 2018 Curity AB
  • 18. Improper Usage of OAuth Not for authentication Not for federation Not really for authorization @travis / @curityio Copyright © 2018 Curity AB
  • 19. Proper Usage or OAuth For delegation @travis / @curityio Copyright © 2018 Curity AB
  • 20. Profiles: Basic, Implicit, Hybrid flow, FAPI Form POST response model Dynamic client registration Logout Session management Discovery @travis / @curityio Copyright © 2018 Curity AB
  • 21. Copyright Curity AB 2017 OIDC & OAuth versions WebFinger Well-known URIs Discovery Metadata Copyright Curity AB 2017
  • 22. OpenID Connect Examples Get user info using access token OAuth AS / OpenID Provider RP / Client Browser Access code Send code to get access token Access token & ID token Check audience restriction of ID token Request login, providing “openid” scope & user info scopes User info @travis / @curityio Copyright © 2018 Curity AB
  • 23. ID Token is for the Client • Access token is for API • ID token is for client • ID token provides client with info about • Intended client recipient • Username • Credential used to login • Issuer of token • Expiration time @travis / @curityio Copyright © 2018 Curity AB
  • 24. User Info Endpoint • Token issuance and user discovery endpoint • Authenticate using access token issued by OpenID Provider • Output depends on requested and authorized scopes • sub claim must match sub claim in ID token @travis / @curityio Copyright © 2018 Curity AB
  • 25. For High Security PoP Token binding Proof Key for Code Exchange (PKCE or “pixie”) Mutual TLS Profile for OAuth @travis / @curityio Copyright © 2018 Curity AB
  • 26. Around 50 RFCs, drafts & other specs 26 Hopefully this has been a helpful overview to start digging deeper @travis / @curityio Copyright © 2018 Curity AB
  • 27. Visit curity.io and stop by our booth @travis / @curityio Copyright © 2018 Curity AB