Quels standards pour protéger les APIs ?
Bertrand CARLIER
bertrand.carlier@wavestone.com
@bertrandcarlier
confidentiel | © WAVESTONE 2CNIS Event | Octobre 2017
Des clients leaders
dans leur secteur
2,500 collaborateurs
sur 4 continents
Parmi les leaders du conseil
indépendant en Europe,
n°1 en France
* Partenariats
Paris | Londres | New York | Hong Kong | Singapour* | Dubaï*
Bruxelles | Luxembourg | Genève | Casablanca
Lyon | Marseille | Nantes
Dans un monde où la capacité à se transformer est la clé du succès,
nous éclairons et guidons nos clients dans leurs décisions les plus stratégiques
confidentiel | © WAVESTONE 3CNIS Event | Octobre 2017
Réussir sa
transformation numérique
grâce à la confiance numérique
UNE EXPERTISE EPROUVEE
/ Stratégie et Conformité
/ Transformation métier sécurisée
/ Architecture et programme sécurité
/ Identité, Fraude et Services de Confiance
/ Tests d’intrusion & Réponse à incident
/ Continuité d’Activité & Résilience
/ SI Industriel
NOS DIFFERENCIATEURS
/ Connaissance des risques métier
/ Méthodologie AMT pour les
schémas directeurs
/ Radars Innovation et Start-ups
/ CERT-W
/ Bug Bounty by Wavestone
Wavestone Cybersécurité & Confiance numérique
Nos clients
COMEX, Métier,
CDO, CIO, CISO, BCM
400+
Consultants & Experts
à Paris, Londres, New
York & Hong Kong
1,000+
Missions par an
dans plus de
20 pays
confidentiel | © WAVESTONE 4CNIS Event | Octobre 2017
Maslow’s hierarchy of needs
confidentiel | © WAVESTONE 5CNIS Event | Octobre 2017
Maslow’s hierarchy of needs - updated
confidentiel | © WAVESTONE 7CNIS Event | Octobre 2017
OAuth2 – Hierarchy of needs
LES BASES
/ Application client-side & server-side
/ Serveur à serveur
/ Application mobile &
Authentification longue durée
confidentiel | © WAVESTONE 8CNIS Event | Octobre 2017
Implicit and Client Credentials
YOU’VE GOT MAIL
Site web
comparateur
API
compagnie
aérienne
API
compagnie
aérienne
API
compagnie
aérienne
Client
Authorization
server
Resource
server
Access token
Comparateur de vols
Classe éco
Direct
2 escales
Business class
Bateau
confidentiel | © WAVESTONE 9CNIS Event | Octobre 2017
Authorization code
ARE YOU AUTHORIZED?
Site web
compagnie
aérienne
API compagnie
aérienne
Client
Authorization
server
Resource
server
Access token
Resource
owner
confidentiel | © WAVESTONE 10CNIS Event | Octobre 2017
Proof Key for Code Exchange
PIXIES
API compagnie
aérienne
Client
Authorization
server
Resource
server
Access token
Resource
owner
PKCE (RFC 7636)
confidentiel | © WAVESTONE 11CNIS Event | Octobre 2017
Refresh token
(RE)FRESH
Refresh token
Client
Authorization
server
Resource
server
Access token
Resource
owner
PKCE (RFC 7636)
API compagnie
aérienne
confidentiel | © WAVESTONE 12CNIS Event | Octobre 2017
20
17
18
76
OAuth2.0 : c’est très simple
Qui ne souhaiterait pas lire 130 pages de RFC ?
Et un petit complément de 71 pages pour aborder la sécurité :
« OAuth2 Threat Model and Security Considerations »
Refresh token
Client
Authorization
server
Resource
server
Access token
Resource
owner
Proof Key for Code Exchange
confidentiel | © WAVESTONE 13CNIS Event | Octobre 2017
OAuth2 – Hierarchy of needs
LES BASES
KIT DE SURVIE
/ SSO moderne
/ Authentification adaptative
/ APIs fédérées
/ Application client-side & server-side
/ Serveur à serveur
/ Application mobile &
Authentification longue durée
confidentiel | © WAVESTONE 14CNIS Event | Octobre 2017
OpenID Connect
FRENCH CONNECTION
Client
Authorization
server
Resource
server
Access token
Resource
owner
Refresh
token
PKCE (RFC 7636)
Site web de
la commune
API
Ministère des
finances
France
Connect
hub
ID token
confidentiel | © WAVESTONE 15CNIS Event | Octobre 2017
Authentication Context Reference (acr)
SMS, I KNOW…
API Banque
Authorization
server
Banque
Client
Authorization
server
Resource
server
Access token
Resource
owner
Refresh
token
ID token
OpenID
Connect
provider
PKCE (RFC 7636)
confidentiel | © WAVESTONE 16CNIS Event | Octobre 2017
JWT Bearer profile
ONE RING TOKEN TO RULE THEM ALL
Client
Authorization
server
Resource
server
Access token
Resource
owner
Refresh
token
ID token
OpenID
Connect
provider
PKCE (RFC 7636)
Bank
website
Bank & Insurance
discount
White label
insurance
Site web
bancaire
Authorization
server Assurance
API
Assurance
1
2
confidentiel | © WAVESTONE 17CNIS Event | Octobre 2017
Oauth2.0 for Native Applications
SSO ON THE GO
app app Oauth 2 for
native apps
Client
Authorization
server
Resource
server
Access token
Resource
owner
Refresh
token
ID token
PKCE (RFC 7636)
Mobile phone
Authorization
server
Banque
OpenID
Connect
provider
confidentiel | © WAVESTONE 18CNIS Event | Octobre 2017
OAuth2.0 : Kit de survie
Authentification adaptative
Initié par l’application (acr request)
par l’Authorization Server (authentification graduée)
ou par l’API (continuous authentication)
APIs federation
REST friendly
Scalable
Single Sign-On moderne
Au-delà du périmètre de l’entreprise
Compatible navigateur & mobile
confidentiel | © WAVESTONE 19CNIS Event | Octobre 2017
OAuth2 – Hierarchy of needs
CAS D’USAGE
AVANCÉS
KIT DE SURVIE
LES BASES
/ Objets connectés
/ Vol de jetons
/ Gestion du partage à maille fine
/ Propagation d’identité
confidentiel | © WAVESTONE 21CNIS Event | Octobre 2017
OAuth2 Device Flow
2 MINUTES TWICE A DAY
app app Oauth 2 for
native apps
Client
Authorization
server
Resource
server
Access token
Resource
owner
Refresh
token
ID token
PKCE (RFC 7636)
OpenID
Connect
provider
Brosse
connectée
Services cloud
Brosse connectée
Application
brosse
connectée
2 1 3 4
confidentiel | © WAVESTONE 22CNIS Event | Octobre 2017
Token Binding
LATER AGGREGATOR
API Banque
Aggrégateur
multi-bancaire
API Banque
API Banque
app app Oauth 2 for
native apps
Client
Authorization
server
Resource
server
Access token
Resource
owner
Refresh
token
ID token
PKCE (RFC 7636)
Token
Binding
& Mutual TLS profiles
The “Personal
Finance
Manager”
usecase
OpenID
Connect
provider
confidentiel | © WAVESTONE 23CNIS Event | Octobre 2017
User Managed Access
RUN BABY RUN
Token
Binding
& Mutual TLS profiles
app app Oauth 2 for
native apps
Client
Authorization
server
Resource
server
Access token
Resource
owner
Refresh
token
ID token
PKCE (RFC 7636)
Requesting
party
Doctor Receptionist
OpenID
Connect
provider
Réceptioniste Médecin
Logiciel
cabinet médical Données
médicales
personnelles
Moi Authorization
server
confidentiel | © WAVESTONE 24CNIS Event | Octobre 2017
Token Exchange
WALL STREET
( )
Service
Client
Client
API
Token
Binding
app app Oauth 2 for
native apps
Client
Authorization
server
Resource
server
Access token
Resource
owner
Refresh
token
ID token
PKCE (RFC 7636)
Requesting
party
Token
Exchange
OpenID
Connect
provider
Micro
services
confidentiel | © WAVESTONE 25CNIS Event | Octobre 2017
Sans oublier :
/ Dynamic Client Registration & Management
/ OIDC/Oauth Discovery
/ Signed request
/ Mobile Connect
/ OIDC Session Management
/ Token revocation
/ …
The big picture
AT LAST
Token
Binding
app app Oauth 2 for
native apps
Client
Authorization
server
Resource
server
Access token
Resource
owner
Refresh
token
ID token
PKCE (RFC 7636)Requesting
party
Token
Exchange
OpenID
Connect
provider
confidentiel | © WAVESTONE 26CNIS Event | Octobre 2017
Assembler correctement… sur une base saine
Bonnes pratiques de sécurisation d’applications web
Ne surtout pas oublier qu’une API est
avant tout une application web
OAuth2 représente un écosystème très riche
 Choisir les bons morceaux
 Les assembler avec attention
 Ne pas obtenir in fine un faux sentiment de sécurité
CAS D’USAGE
AVANCÉS
KIT DE SURVIE
LES BASES
wavestone.com
@wavestone_
riskinsight-wavestone.com
@Risk_Insight
securityinsider-solucom.fr
@SecuInsider
Bertrand CARLIER
Senior Manager
M +33 6 18 64 42 52
bertrand.carlier@wavestone.com
PARIS
LONDON
NEW YORK
HONG KONG
SINGAPORE *
DUBAI *
BRUSSELS
LUXEMBOURG
GENEVA
CASABLANCA
LYON
MARSEILLE
NANTES
* Partenaires stratégiques
PARIS
LONDRES
NEW YORK
HONG KONG
SINGAPORE *
DUBAI *
SAO PAULO *
LUXEMBOURG
MADRID *
MILAN *
BRUXELLES
GENEVE
CASABLANCA
ISTAMBUL *
LYON
MARSEILLE
NANTES
* Partenariats

OAuth2 stands overview

  • 1.
    Quels standards pourprotéger les APIs ? Bertrand CARLIER bertrand.carlier@wavestone.com @bertrandcarlier
  • 2.
    confidentiel | ©WAVESTONE 2CNIS Event | Octobre 2017 Des clients leaders dans leur secteur 2,500 collaborateurs sur 4 continents Parmi les leaders du conseil indépendant en Europe, n°1 en France * Partenariats Paris | Londres | New York | Hong Kong | Singapour* | Dubaï* Bruxelles | Luxembourg | Genève | Casablanca Lyon | Marseille | Nantes Dans un monde où la capacité à se transformer est la clé du succès, nous éclairons et guidons nos clients dans leurs décisions les plus stratégiques
  • 3.
    confidentiel | ©WAVESTONE 3CNIS Event | Octobre 2017 Réussir sa transformation numérique grâce à la confiance numérique UNE EXPERTISE EPROUVEE / Stratégie et Conformité / Transformation métier sécurisée / Architecture et programme sécurité / Identité, Fraude et Services de Confiance / Tests d’intrusion & Réponse à incident / Continuité d’Activité & Résilience / SI Industriel NOS DIFFERENCIATEURS / Connaissance des risques métier / Méthodologie AMT pour les schémas directeurs / Radars Innovation et Start-ups / CERT-W / Bug Bounty by Wavestone Wavestone Cybersécurité & Confiance numérique Nos clients COMEX, Métier, CDO, CIO, CISO, BCM 400+ Consultants & Experts à Paris, Londres, New York & Hong Kong 1,000+ Missions par an dans plus de 20 pays
  • 4.
    confidentiel | ©WAVESTONE 4CNIS Event | Octobre 2017 Maslow’s hierarchy of needs
  • 5.
    confidentiel | ©WAVESTONE 5CNIS Event | Octobre 2017 Maslow’s hierarchy of needs - updated
  • 6.
    confidentiel | ©WAVESTONE 7CNIS Event | Octobre 2017 OAuth2 – Hierarchy of needs LES BASES / Application client-side & server-side / Serveur à serveur / Application mobile & Authentification longue durée
  • 7.
    confidentiel | ©WAVESTONE 8CNIS Event | Octobre 2017 Implicit and Client Credentials YOU’VE GOT MAIL Site web comparateur API compagnie aérienne API compagnie aérienne API compagnie aérienne Client Authorization server Resource server Access token Comparateur de vols Classe éco Direct 2 escales Business class Bateau
  • 8.
    confidentiel | ©WAVESTONE 9CNIS Event | Octobre 2017 Authorization code ARE YOU AUTHORIZED? Site web compagnie aérienne API compagnie aérienne Client Authorization server Resource server Access token Resource owner
  • 9.
    confidentiel | ©WAVESTONE 10CNIS Event | Octobre 2017 Proof Key for Code Exchange PIXIES API compagnie aérienne Client Authorization server Resource server Access token Resource owner PKCE (RFC 7636)
  • 10.
    confidentiel | ©WAVESTONE 11CNIS Event | Octobre 2017 Refresh token (RE)FRESH Refresh token Client Authorization server Resource server Access token Resource owner PKCE (RFC 7636) API compagnie aérienne
  • 11.
    confidentiel | ©WAVESTONE 12CNIS Event | Octobre 2017 20 17 18 76 OAuth2.0 : c’est très simple Qui ne souhaiterait pas lire 130 pages de RFC ? Et un petit complément de 71 pages pour aborder la sécurité : « OAuth2 Threat Model and Security Considerations » Refresh token Client Authorization server Resource server Access token Resource owner Proof Key for Code Exchange
  • 12.
    confidentiel | ©WAVESTONE 13CNIS Event | Octobre 2017 OAuth2 – Hierarchy of needs LES BASES KIT DE SURVIE / SSO moderne / Authentification adaptative / APIs fédérées / Application client-side & server-side / Serveur à serveur / Application mobile & Authentification longue durée
  • 13.
    confidentiel | ©WAVESTONE 14CNIS Event | Octobre 2017 OpenID Connect FRENCH CONNECTION Client Authorization server Resource server Access token Resource owner Refresh token PKCE (RFC 7636) Site web de la commune API Ministère des finances France Connect hub ID token
  • 14.
    confidentiel | ©WAVESTONE 15CNIS Event | Octobre 2017 Authentication Context Reference (acr) SMS, I KNOW… API Banque Authorization server Banque Client Authorization server Resource server Access token Resource owner Refresh token ID token OpenID Connect provider PKCE (RFC 7636)
  • 15.
    confidentiel | ©WAVESTONE 16CNIS Event | Octobre 2017 JWT Bearer profile ONE RING TOKEN TO RULE THEM ALL Client Authorization server Resource server Access token Resource owner Refresh token ID token OpenID Connect provider PKCE (RFC 7636) Bank website Bank & Insurance discount White label insurance Site web bancaire Authorization server Assurance API Assurance 1 2
  • 16.
    confidentiel | ©WAVESTONE 17CNIS Event | Octobre 2017 Oauth2.0 for Native Applications SSO ON THE GO app app Oauth 2 for native apps Client Authorization server Resource server Access token Resource owner Refresh token ID token PKCE (RFC 7636) Mobile phone Authorization server Banque OpenID Connect provider
  • 17.
    confidentiel | ©WAVESTONE 18CNIS Event | Octobre 2017 OAuth2.0 : Kit de survie Authentification adaptative Initié par l’application (acr request) par l’Authorization Server (authentification graduée) ou par l’API (continuous authentication) APIs federation REST friendly Scalable Single Sign-On moderne Au-delà du périmètre de l’entreprise Compatible navigateur & mobile
  • 18.
    confidentiel | ©WAVESTONE 19CNIS Event | Octobre 2017 OAuth2 – Hierarchy of needs CAS D’USAGE AVANCÉS KIT DE SURVIE LES BASES / Objets connectés / Vol de jetons / Gestion du partage à maille fine / Propagation d’identité
  • 19.
    confidentiel | ©WAVESTONE 21CNIS Event | Octobre 2017 OAuth2 Device Flow 2 MINUTES TWICE A DAY app app Oauth 2 for native apps Client Authorization server Resource server Access token Resource owner Refresh token ID token PKCE (RFC 7636) OpenID Connect provider Brosse connectée Services cloud Brosse connectée Application brosse connectée 2 1 3 4
  • 20.
    confidentiel | ©WAVESTONE 22CNIS Event | Octobre 2017 Token Binding LATER AGGREGATOR API Banque Aggrégateur multi-bancaire API Banque API Banque app app Oauth 2 for native apps Client Authorization server Resource server Access token Resource owner Refresh token ID token PKCE (RFC 7636) Token Binding & Mutual TLS profiles The “Personal Finance Manager” usecase OpenID Connect provider
  • 21.
    confidentiel | ©WAVESTONE 23CNIS Event | Octobre 2017 User Managed Access RUN BABY RUN Token Binding & Mutual TLS profiles app app Oauth 2 for native apps Client Authorization server Resource server Access token Resource owner Refresh token ID token PKCE (RFC 7636) Requesting party Doctor Receptionist OpenID Connect provider Réceptioniste Médecin Logiciel cabinet médical Données médicales personnelles Moi Authorization server
  • 22.
    confidentiel | ©WAVESTONE 24CNIS Event | Octobre 2017 Token Exchange WALL STREET ( ) Service Client Client API Token Binding app app Oauth 2 for native apps Client Authorization server Resource server Access token Resource owner Refresh token ID token PKCE (RFC 7636) Requesting party Token Exchange OpenID Connect provider Micro services
  • 23.
    confidentiel | ©WAVESTONE 25CNIS Event | Octobre 2017 Sans oublier : / Dynamic Client Registration & Management / OIDC/Oauth Discovery / Signed request / Mobile Connect / OIDC Session Management / Token revocation / … The big picture AT LAST Token Binding app app Oauth 2 for native apps Client Authorization server Resource server Access token Resource owner Refresh token ID token PKCE (RFC 7636)Requesting party Token Exchange OpenID Connect provider
  • 24.
    confidentiel | ©WAVESTONE 26CNIS Event | Octobre 2017 Assembler correctement… sur une base saine Bonnes pratiques de sécurisation d’applications web Ne surtout pas oublier qu’une API est avant tout une application web OAuth2 représente un écosystème très riche  Choisir les bons morceaux  Les assembler avec attention  Ne pas obtenir in fine un faux sentiment de sécurité CAS D’USAGE AVANCÉS KIT DE SURVIE LES BASES
  • 25.
  • 26.
    PARIS LONDON NEW YORK HONG KONG SINGAPORE* DUBAI * BRUSSELS LUXEMBOURG GENEVA CASABLANCA LYON MARSEILLE NANTES * Partenaires stratégiques PARIS LONDRES NEW YORK HONG KONG SINGAPORE * DUBAI * SAO PAULO * LUXEMBOURG MADRID * MILAN * BRUXELLES GENEVE CASABLANCA ISTAMBUL * LYON MARSEILLE NANTES * Partenariats