InterCon 2016 - Segurança de identidade digital levando em consideração uma arquitetura de microserviço

iMasters
iMastersjornalista, web editor, web writer, tradutora (en-pt/pt-en) at iMasters
Identity	
  within	
  Microservices
Erick	
  Belluci Tedeschi
@ericktedeschi
São	
  Paulo,	
  Oct	
  22	
  2016
Who?
• PHP	
  Developer	
  since	
  2003
• Application	
  Security	
  since	
  2007
• Biker
• Maker
• Help	
  devs delivery	
  Secure	
  Applications
• Help	
  business	
  to	
  keep	
  clients	
  data	
  secure
Agenda
• Microservice architecture	
  Version	
  1
• About	
  Tokens
• OAuth	
  2.0
• OpenID	
  Connect
• Authorization	
  Code	
  Flow	
  Example
• Microservice architecture	
  NG!!!
Microservice Architecture	
  V1
API	
  GatewayOAuth	
  Server*
Account
GET	
  /my/{user_id}
Transfer
POST	
  /transferto/{src_account}/{dst_account}
Receipt
GET	
  /receipts/{user_id}
End-­‐User
Bank	
  API	
  (Public)
GET	
  	
  	
  /my
POST	
  /transferto/{dst_account}
GET	
  	
  	
  /receipts
/token
/authorize
Basic	
  auth
Basic	
  auth
No	
  auth
Microservice Architecture	
  V1
API	
  GatewayOAuth	
  Server*
Account
GET	
  /my/{user_id}
Transfer
POST	
  /transferto/{src_account}/{dst_account}
Receipt
GET	
  /receipts/{user_id}
End-­‐User
Bank	
  API	
  (Public)
GET	
  	
  	
  /my
POST	
  /transferto/{dst_account}
GET	
  	
  	
  /receipts
/token
/authorize
Basic	
  auth
Basic	
  auth
No	
  auth
• Poor	
  logging	
  (audit	
  trail)
• Poor	
  identification	
  on	
  microservices (X-­‐User-­‐Logged	
  L)
• Authorization	
  centralized	
  on	
  API	
  Gateway
• Microservices are	
  more	
  like	
  CRUDs	
  APIs
• Microservices have	
  ”micro	
  user	
  repositories”	
  or	
  don’t	
  
have	
  authentication/authorization
• API	
  Gateway	
  have	
  more	
  responsibility	
  than	
  necessary
Now,	
  let’s	
  take	
  a	
  look	
  at	
  the:	
  Token
• A	
  piece	
  of stamped metal used	
  as	
  a substitute for money;	
  a voucher that	
  can	
  be	
  exchanged	
  for	
  goods	
  or	
  
services	
  (https://en.wiktionary.org/wiki/token)
• Token	
  By	
  Reference
• An	
  opaque	
  string	
  generated	
  randomly
• Ex.:	
  2YotnFZFEjr1zCsicMWpAA
• Token	
  By	
  Value
• A	
  JWT	
  that	
  contains	
  claims	
  about	
  the	
  context	
  of	
  the	
  token
• Ex.:	
  
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL215LnNlcnZpY2UuY29tIiwiaWF0IjoxNDM1MTc5NjAzLCJleHA
iOjE0MzUxODE0MjEsImF1ZCI6Ind3dy5zZXJ2aWNlLmNvbSIsInN1YiI6ImpvaG5kb2VAZ21haWwuY29tIiwiUm9sZSI6WyJhcHByb
3ZlciIsInZpZXdlciJdfQ.91GLvtMhhnICmqlf_RVONGw5IM9i8eeAPx2s_WpMObU
JWT	
  – JSON	
  Web	
  Token
eyJ0eXAiOiJKV1QiL
CJhbGciOiJIUzI1NiJ
9.eyJpc3MiOiJodH
RwczovL215LnNlcn
ZpY2UuY29tIiwiaW
F0IjoxNDM1MTc5N
jAzLCJleHAiOjE0Mz
UxODE0MjEsImF1Z
CI6Ind3dy5zZXJ2a
WNlLmNvbSIsInN1
YiI6ImpvaG5kb2VA
Z21haWwuY29tIiwi
Um9sZSI6WyJhcHB
yb3ZlciIsInZpZXdlci
JdfQ.91GLvtMhhnI
Cmqlf_RVONGw5I
M9i8eeAPx2s_Wp
MObU
{
"typ":	
  "JWT",
"alg":	
  "HS256"
}
{
"iss":	
  "https://my.service.com",
"iat":	
  1435179603,
"exp":	
  1435181421,
"aud":	
  "www.service.com",
"sub":	
  "johndoe@gmail.com",
"Role":	
  [
"approver",
"viewer"
]
}
HMACSHA256(
base64UrlEncode(header)	
  +	
  "."	
  +
base64UrlEncode(payload),sharedsecret)
JWT	
  Header
JWT	
  Payload
JWT	
  Signature
The	
  OAuth	
  2.0	
  Authorization	
  Framework
The	
  OAuth	
  2.0	
  enables	
  a	
  third-­‐party	
  application	
  to	
  obtain	
  
limited	
  access	
  to	
  an	
  HTTP	
  service	
  on	
  behalf	
  of	
  a	
  resource	
  
owner...
OAuth	
  2.0	
  – Protocol	
  or	
  Framework?
• RFC	
  5849:	
  The	
  OAuth	
  1.0	
  Protocol
• RFC	
  6749:	
  The	
  OAuth	
  2.0	
  Authorization	
  Framework
https://tools.ietf.org/html/rfc5849
…	
  contract,	
  pact,	
  deal	
  
https://tools.ietf.org/html/rfc6749
…	
  structure,	
  skeleton,	
  chassis
Warning:	
  OAuth	
  is	
  not	
  about	
  authentication
Warning:	
  OAuth	
  is	
  not	
  about	
  authentication
How	
  an	
  access_token looks	
  like?	
  (by	
  value	
  -­‐ JWT)
// JWT Payload
{
"sub": "alice", // user id
"cid": "000123", // client id
"iss": "https://as.domain.com", // who issued
"aud": "https://rs.domain.com",
"exp": 1460345736, // expiration date
"scp": ["openid","email","profile"] // scopes
}
OpenID	
  Connect
OpenID	
  Connect	
  1.0	
  is	
  a	
  simple	
  identity	
  layer	
  on	
  top	
  of	
  the	
  OAuth	
  2.
How	
  an	
  id_token looks	
  like?	
  (by	
  value	
  -­‐ JWT)
{
"iss": ”InstIdentRicardoGumbletonDaunt", // who issued
"sub": ”4.444.444", // user identification
"aud": ["cops","bank"], // where it’s used
"nonce": "n-0S6_WzA2Mj",
"exp": 1311281970, // 10 years
"iat": 1311280970,
"auth_time": 1311280969,
"amr": "sign+fingerprint” //auth-methods-ref
}
OpenID	
  Connect	
  Discovery	
  1.0
A	
  complete	
  Authorization	
  Server
• /authorize
• /token
• /introspection	
  (check	
  access_token)
• /token_info (get	
  more	
  information	
  about	
  identity)
• /revocation
Let’s	
  see	
  how	
  to	
  get	
  both	
  access_token and	
  
id_token using	
  Authorization	
  Code	
  Flow
Resource
Owner
Authorization
Server
Resource
Server
Client
access
Resource
Owner
Authorization
Server
Resource
Server
Client
access
*	
  GET	
  /authorize?response_type=code&client_id=s6BhdRkqt3&scope=openid%20profile%20email&state=xyz
&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1
Resource
Owner
Authorization
Server
Resource
Server
Client
access
Resource
Owner
Authorization
Server
Resource
Server
Client
access
Resource
Owner
Authorization
Server
Resource
Server
Client
*	
  Location:	
  https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=xyz
Resource
Owner
Authorization
Server
Resource
Server
Client
POST	
  /token	
  HTTP/1.1
Host:	
  server.example.com
Authorization:	
  Basic	
  czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-­‐Type:	
  application/x-­‐www-­‐form-­‐urlencoded
grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
Resource
Owner
Authorization
Server
Resource
Server
Client
HTTP/1.1	
  200	
  OK
Content-­‐Type:	
  application/json;charset=UTF-­‐8
Cache-­‐Control:	
  no-­‐store
Pragma:	
  no-­‐cache
{
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"Bearer",
"expires_in":3600,
"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
"id_token":	
  
"eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzcyI6ICJodHRwOi
8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5NzYxMDAx
IiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZfV3pBM
k1qIiwKICJleHAiOiAxMzE.xptoxptoxpto"
}
Resource
Owner
Authorization
Server
Resource
Server
Client
Resource
Owner
Authorization
Server
Resource
Server
Client
POST	
  /introspect	
  HTTP/1.1
Host:	
  server.example.com
Authorization:	
  Basic	
  czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-­‐Type:	
  application/x-­‐www-­‐form-­‐urlencoded
token=2YotnFZFEjr1zCsicMWpAA
https://tools.ietf.org/search/rfc7662 OAuth	
  2.0	
  Token	
  Introspection
Introspection	
  Request
Resource
Owner
Authorization
Server
Resource
Server
Client
HTTP/1.1	
  200	
  OK
Content-­‐Type:	
  application/json
{
"active":	
  true,
"client_id":	
  "l238j323ds-­‐23ij4",
"username":	
  "jdoe",
"scope":	
  ”openid profile	
  email",
"sub":	
  "Z5O3upPC88QrAjx00dis",
"aud":	
  "https://protected.example.net/resource",
"iss":	
  "https://server.example.com/",
"exp":	
  1419356238,
"iat":	
  1419350238,
"extension_field":	
  "twenty-­‐seven”
}
https://tools.ietf.org/search/rfc7662 OAuth	
  2.0	
  Token	
  Introspection
Introspection	
  Request
Resource
Owner
Authorization
Server
Resource
Server
Client
https://tools.ietf.org/search/rfc7662 OAuth	
  2.0	
  Token	
  Introspection
Introspection	
  Request
Resource
Owner
Authorization
Server
Resource
Server
Client
https://tools.ietf.org/search/rfc7662 OAuth	
  2.0	
  Token	
  Introspection
Introspection	
  Request
Nice
Microservice Architecture	
  NG!!!
API	
  Gateway
Authorization
Server
Account
GET	
  /my
GET	
  /pvt/{account}
Transfer
POST	
  /transferto/{dst_account}
Receipt
GET	
  /receipts
OAuth
Filter
OAuth
Filter
OAuth
Filter
OAuth	
  Filter
Resource
Owner
Introspection/validation
Bank	
  API	
  (Public)
GET	
  	
  	
  /my
POST	
  /transferto/{dst_account}
GET	
  	
  	
  /receipts
/token
/authorize
/introspect
/revoke
/token_info
”offline	
  introspection/validation”
”offline	
  introspection/validation”
Microservice Architecture	
  NG!!!
API	
  Gateway
Authorization
Server
Account
GET	
  /my
GET	
  /pvt/{account}
Transfer
POST	
  /transferto/{dst_account}
Receipt
GET	
  /receipts
OAuth
Filter
OAuth
Filter
OAuth
Filter
OAuth	
  Filter
Resource
Owner
Introspection/validation
Bank	
  API	
  (Public)
GET	
  	
  	
  /my
POST	
  /transferto/{dst_account}
GET	
  	
  	
  /receipts
/token
/authorize
/introspect
/revoke
/token_info
”offline	
  introspection/validation”
”offline	
  introspection/validation”
• Audit	
  Trail	
  Improved
• Microservices can	
  make	
  decision	
  based	
  on	
  the	
  end-­‐user	
  
identity
• Fine	
  grained	
  authorization	
  across	
  the	
  services
• The	
  whole	
  environment	
  have	
  a	
  central	
  user	
  identity	
  
repository	
  (OAuth+OpenID Connect	
  Server)
• API	
  Gateway	
  is	
  clean/slim
Don’t	
  start	
  from	
  scratch
• OpenSource
• Connect2ID	
  http://connect2id.com/
• Keycloak http://www.keycloak.org/
• MitreID Connect	
  https://github.com/mitreid-­‐connect/OpenID-­‐Connect-­‐Java-­‐
Spring-­‐Server
• WSO2	
  Identity	
  Server	
  http://wso2.com/products/identity-­‐server/
References	
  and	
  Links
• OAuth	
  2.0:	
  https://tools.ietf.org/html/rfc6749
• OAuth	
  2.0	
  Bearer	
  Token	
  Usage:	
  https://tools.ietf.org/html/rfc6750
• OpenID	
  Connect	
  Core:	
  http://openid.net/specs/openid-­‐connect-­‐core-­‐1_0.html
• OpenID	
  Connect	
  Discovery:	
  https://openid.net/specs/openid-­‐connect-­‐discovery-­‐1_0.html
• JOSÉ	
  (JSON	
  Object	
  Signing	
  and	
  Encryption)
• JSON	
  Web	
  Signature	
  (JWS)	
  https://tools.ietf.org/html/rfc7515
• JSON	
  Web	
  Encryption	
  (JWE)	
  https://tools.ietf.org/html/rfc7516
• JSON	
  Web	
  Key	
  (JWK)	
  https://tools.ietf.org/html/rfc7517
• JSON	
  Web	
  Algorithms	
  (JWA)	
  https://tools.ietf.org/html/rfc7518
• JSON	
  Web	
  Token	
  (JWT)	
  https://tools.ietf.org/html/rfc7519
• http://connect2id.com/products/nimbus-­‐jose-­‐jwt/examples/validating-­‐jwt-­‐access-­‐tokens
Thanks
https://www.linkedin.com/in/ericktedeschi
https://twitter.com/ericktedeschi
http://www.slideshare.net/erickt86
erick@oerick.com
1 of 34

Recommended

2016 pycontw web api authentication by
2016 pycontw web api authentication 2016 pycontw web api authentication
2016 pycontw web api authentication Micron Technology
2K views45 slides
OAuth 2.0 – A standard is coming of age by Uwe Friedrichsen by
OAuth 2.0 – A standard is coming of age by Uwe FriedrichsenOAuth 2.0 – A standard is coming of age by Uwe Friedrichsen
OAuth 2.0 – A standard is coming of age by Uwe FriedrichsenCodemotion
1.2K views44 slides
Building Secure User Interfaces With JWTs (JSON Web Tokens) by
Building Secure User Interfaces With JWTs (JSON Web Tokens)Building Secure User Interfaces With JWTs (JSON Web Tokens)
Building Secure User Interfaces With JWTs (JSON Web Tokens)Stormpath
12K views63 slides
Token Based Authentication Systems with AngularJS & NodeJS by
Token Based Authentication Systems with AngularJS & NodeJSToken Based Authentication Systems with AngularJS & NodeJS
Token Based Authentication Systems with AngularJS & NodeJSHüseyin BABAL
6.2K views15 slides
PHP Experience 2016 - [Palestra] Json Web Token (JWT) by
PHP Experience 2016 - [Palestra] Json Web Token (JWT)PHP Experience 2016 - [Palestra] Json Web Token (JWT)
PHP Experience 2016 - [Palestra] Json Web Token (JWT)iMasters
2.1K views33 slides
Top 10 Web Hacks 2012 by
Top 10 Web Hacks 2012Top 10 Web Hacks 2012
Top 10 Web Hacks 2012Matt Johansen
29.5K views81 slides

More Related Content

What's hot

REST Service Authetication with TLS & JWTs by
REST Service Authetication with TLS & JWTsREST Service Authetication with TLS & JWTs
REST Service Authetication with TLS & JWTsJon Todd
8K views60 slides
An Introduction to OAuth2 by
An Introduction to OAuth2An Introduction to OAuth2
An Introduction to OAuth2Aaron Parecki
14.7K views78 slides
Modern API Security with JSON Web Tokens by
Modern API Security with JSON Web TokensModern API Security with JSON Web Tokens
Modern API Security with JSON Web TokensJonathan LeBlanc
3.7K views41 slides
Json web token api authorization by
Json web token api authorizationJson web token api authorization
Json web token api authorizationGiulio De Donato
15.2K views24 slides
JavaOne 2014 - Securing RESTful Resources with OAuth2 by
JavaOne 2014 - Securing RESTful Resources with OAuth2JavaOne 2014 - Securing RESTful Resources with OAuth2
JavaOne 2014 - Securing RESTful Resources with OAuth2Rodrigo Cândido da Silva
18K views38 slides
RoadSec 2017 - Trilha AppSec - APIs Authorization by
RoadSec 2017 - Trilha AppSec - APIs AuthorizationRoadSec 2017 - Trilha AppSec - APIs Authorization
RoadSec 2017 - Trilha AppSec - APIs AuthorizationErick Belluci Tedeschi
370 views26 slides

What's hot(19)

REST Service Authetication with TLS & JWTs by Jon Todd
REST Service Authetication with TLS & JWTsREST Service Authetication with TLS & JWTs
REST Service Authetication with TLS & JWTs
Jon Todd8K views
An Introduction to OAuth2 by Aaron Parecki
An Introduction to OAuth2An Introduction to OAuth2
An Introduction to OAuth2
Aaron Parecki14.7K views
Modern API Security with JSON Web Tokens by Jonathan LeBlanc
Modern API Security with JSON Web TokensModern API Security with JSON Web Tokens
Modern API Security with JSON Web Tokens
Jonathan LeBlanc3.7K views
Json web token api authorization by Giulio De Donato
Json web token api authorizationJson web token api authorization
Json web token api authorization
Giulio De Donato15.2K views
Securing RESTful APIs using OAuth 2 and OpenID Connect by Jonathan LeBlanc
Securing RESTful APIs using OAuth 2 and OpenID ConnectSecuring RESTful APIs using OAuth 2 and OpenID Connect
Securing RESTful APIs using OAuth 2 and OpenID Connect
Jonathan LeBlanc49.2K views
Building Secure User Interfaces With JWTs by robertjd
Building Secure User Interfaces With JWTsBuilding Secure User Interfaces With JWTs
Building Secure User Interfaces With JWTs
robertjd658 views
Using JSON Web Tokens for REST Authentication by Mediacurrent
Using JSON Web Tokens for REST Authentication Using JSON Web Tokens for REST Authentication
Using JSON Web Tokens for REST Authentication
Mediacurrent2K views
Summary of OAuth 2.0 draft 8 memo by Ryo Ito
Summary of OAuth 2.0 draft 8 memoSummary of OAuth 2.0 draft 8 memo
Summary of OAuth 2.0 draft 8 memo
Ryo Ito678 views
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect - by Naoki Nagazumi
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
Naoki Nagazumi22.8K views
Introduction to OAuth by Paul Osman
Introduction to OAuthIntroduction to OAuth
Introduction to OAuth
Paul Osman3.3K views
Introduction to JWT and How to integrate with Spring Security by Bruno Henrique Rother
Introduction to JWT and How to integrate with Spring SecurityIntroduction to JWT and How to integrate with Spring Security
Introduction to JWT and How to integrate with Spring Security
Adding Identity Management and Access Control to your Application, Authorization by Fernando Lopez Aguilar
Adding Identity Management and Access Control to your Application, AuthorizationAdding Identity Management and Access Control to your Application, Authorization
Adding Identity Management and Access Control to your Application, Authorization
Securing Single Page Applications with Token Based Authentication by Stefan Achtsnit
Securing Single Page Applications with Token Based AuthenticationSecuring Single Page Applications with Token Based Authentication
Securing Single Page Applications with Token Based Authentication
Stefan Achtsnit4.3K views

Viewers also liked

InterCon 2016 - BioHacking: criando dispositivos de biotecnologia OpenSource/... by
InterCon 2016 - BioHacking: criando dispositivos de biotecnologia OpenSource/...InterCon 2016 - BioHacking: criando dispositivos de biotecnologia OpenSource/...
InterCon 2016 - BioHacking: criando dispositivos de biotecnologia OpenSource/...iMasters
1.2K views31 slides
InterCon 2016 - Performance, anti-patterns e stacks para desenvolvimento ágil by
InterCon 2016 - Performance, anti-patterns e stacks para desenvolvimento ágilInterCon 2016 - Performance, anti-patterns e stacks para desenvolvimento ágil
InterCon 2016 - Performance, anti-patterns e stacks para desenvolvimento ágiliMasters
930 views136 slides
InterCon 2016 - Desafios de conectividade de dispositivos em realtime by
InterCon 2016 - Desafios de conectividade de dispositivos em realtimeInterCon 2016 - Desafios de conectividade de dispositivos em realtime
InterCon 2016 - Desafios de conectividade de dispositivos em realtimeiMasters
976 views23 slides
15 Práticas para você aplicar hoje em Search Marketing e Melhorar o seu ROI by
15 Práticas para você aplicar hoje em Search Marketing e Melhorar o seu ROI15 Práticas para você aplicar hoje em Search Marketing e Melhorar o seu ROI
15 Práticas para você aplicar hoje em Search Marketing e Melhorar o seu ROITomás Händel Trojan
1.1K views28 slides
Android DevConference - Firebase para desenvolvedores by
Android DevConference - Firebase para desenvolvedoresAndroid DevConference - Firebase para desenvolvedores
Android DevConference - Firebase para desenvolvedoresiMasters
448 views46 slides
InterCon 2012 - Metricas - Search Marketing Optimization na Prática by
InterCon 2012 - Metricas - Search Marketing Optimization na PráticaInterCon 2012 - Metricas - Search Marketing Optimization na Prática
InterCon 2012 - Metricas - Search Marketing Optimization na PráticaiMasters
458 views36 slides

Viewers also liked(11)

InterCon 2016 - BioHacking: criando dispositivos de biotecnologia OpenSource/... by iMasters
InterCon 2016 - BioHacking: criando dispositivos de biotecnologia OpenSource/...InterCon 2016 - BioHacking: criando dispositivos de biotecnologia OpenSource/...
InterCon 2016 - BioHacking: criando dispositivos de biotecnologia OpenSource/...
iMasters1.2K views
InterCon 2016 - Performance, anti-patterns e stacks para desenvolvimento ágil by iMasters
InterCon 2016 - Performance, anti-patterns e stacks para desenvolvimento ágilInterCon 2016 - Performance, anti-patterns e stacks para desenvolvimento ágil
InterCon 2016 - Performance, anti-patterns e stacks para desenvolvimento ágil
iMasters930 views
InterCon 2016 - Desafios de conectividade de dispositivos em realtime by iMasters
InterCon 2016 - Desafios de conectividade de dispositivos em realtimeInterCon 2016 - Desafios de conectividade de dispositivos em realtime
InterCon 2016 - Desafios de conectividade de dispositivos em realtime
iMasters976 views
15 Práticas para você aplicar hoje em Search Marketing e Melhorar o seu ROI by Tomás Händel Trojan
15 Práticas para você aplicar hoje em Search Marketing e Melhorar o seu ROI15 Práticas para você aplicar hoje em Search Marketing e Melhorar o seu ROI
15 Práticas para você aplicar hoje em Search Marketing e Melhorar o seu ROI
Android DevConference - Firebase para desenvolvedores by iMasters
Android DevConference - Firebase para desenvolvedoresAndroid DevConference - Firebase para desenvolvedores
Android DevConference - Firebase para desenvolvedores
iMasters448 views
InterCon 2012 - Metricas - Search Marketing Optimization na Prática by iMasters
InterCon 2012 - Metricas - Search Marketing Optimization na PráticaInterCon 2012 - Metricas - Search Marketing Optimization na Prática
InterCon 2012 - Metricas - Search Marketing Optimization na Prática
iMasters458 views
Android DevConference - Indo além com automação de testes de apps Android by iMasters
Android DevConference - Indo além com automação de testes de apps AndroidAndroid DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps Android
iMasters292 views
InterCon 2016 - Internet of “Thinking” – IoT sem BS com ESP8266 by iMasters
InterCon 2016 - Internet of “Thinking” – IoT sem BS com ESP8266InterCon 2016 - Internet of “Thinking” – IoT sem BS com ESP8266
InterCon 2016 - Internet of “Thinking” – IoT sem BS com ESP8266
iMasters1.3K views
Android DevConference - Android Clean Architecture by iMasters
Android DevConference - Android Clean ArchitectureAndroid DevConference - Android Clean Architecture
Android DevConference - Android Clean Architecture
iMasters777 views
InterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecer by iMasters
InterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecerInterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecer
InterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecer
iMasters1.4K views
InterCon 2016 - Backend do IoT com RethinkDB e Python by iMasters
InterCon 2016 - Backend do IoT com RethinkDB e PythonInterCon 2016 - Backend do IoT com RethinkDB e Python
InterCon 2016 - Backend do IoT com RethinkDB e Python
iMasters1.5K views

Similar to InterCon 2016 - Segurança de identidade digital levando em consideração uma arquitetura de microserviço

AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect" by
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"Andreas Falk
341 views35 slides
OAuth 2.0 by
OAuth 2.0OAuth 2.0
OAuth 2.0Uwe Friedrichsen
4.8K views44 slides
Demystifying REST by
Demystifying RESTDemystifying REST
Demystifying RESTKirsten Hunter
2.7K views34 slides
[LDAPCon 2015] The OpenID Connect Protocol by
[LDAPCon 2015] The OpenID Connect Protocol[LDAPCon 2015] The OpenID Connect Protocol
[LDAPCon 2015] The OpenID Connect ProtocolClément OUDOT
1.6K views44 slides
IdM and AC by
IdM and ACIdM and AC
IdM and ACFernando Lopez Aguilar
2.5K views43 slides
REST API Security: OAuth 2.0, JWTs, and More! by
REST API Security: OAuth 2.0, JWTs, and More!REST API Security: OAuth 2.0, JWTs, and More!
REST API Security: OAuth 2.0, JWTs, and More!Stormpath
7.8K views69 slides

Similar to InterCon 2016 - Segurança de identidade digital levando em consideração uma arquitetura de microserviço(20)

AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect" by Andreas Falk
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"
Andreas Falk341 views
[LDAPCon 2015] The OpenID Connect Protocol by Clément OUDOT
[LDAPCon 2015] The OpenID Connect Protocol[LDAPCon 2015] The OpenID Connect Protocol
[LDAPCon 2015] The OpenID Connect Protocol
Clément OUDOT1.6K views
REST API Security: OAuth 2.0, JWTs, and More! by Stormpath
REST API Security: OAuth 2.0, JWTs, and More!REST API Security: OAuth 2.0, JWTs, and More!
REST API Security: OAuth 2.0, JWTs, and More!
Stormpath7.8K views
2019 - Tech Talk DC - Token-based security for web applications using OAuth2 ... by Vladimir Bychkov
2019 - Tech Talk DC - Token-based security for web applications using OAuth2 ...2019 - Tech Talk DC - Token-based security for web applications using OAuth2 ...
2019 - Tech Talk DC - Token-based security for web applications using OAuth2 ...
Vladimir Bychkov41 views
Secure Authorization for your Printer: The OAuth Device Flow (DevSum 2018) by Scott Brady
Secure Authorization for your Printer: The OAuth Device Flow (DevSum 2018)Secure Authorization for your Printer: The OAuth Device Flow (DevSum 2018)
Secure Authorization for your Printer: The OAuth Device Flow (DevSum 2018)
Scott Brady438 views
Nk API - examples by nasza-klasa
Nk API - examplesNk API - examples
Nk API - examples
nasza-klasa6.1K views
OAuth 2 at Webvisions by Aaron Parecki
OAuth 2 at WebvisionsOAuth 2 at Webvisions
OAuth 2 at Webvisions
Aaron Parecki4.2K views
How we eased out security journey with OAuth (Goodbye Kerberos!) | Paul Makka... by HostedbyConfluent
How we eased out security journey with OAuth (Goodbye Kerberos!) | Paul Makka...How we eased out security journey with OAuth (Goodbye Kerberos!) | Paul Makka...
How we eased out security journey with OAuth (Goodbye Kerberos!) | Paul Makka...
HostedbyConfluent733 views
UserCentric Identity based Service Invocation by guestd5dde6
UserCentric Identity based Service InvocationUserCentric Identity based Service Invocation
UserCentric Identity based Service Invocation
guestd5dde61.2K views
Authentication and authorization in res tful infrastructures by Corley S.r.l.
Authentication and authorization in res tful infrastructuresAuthentication and authorization in res tful infrastructures
Authentication and authorization in res tful infrastructures
Corley S.r.l.278 views
Drive chrome(headless) with puppeteer by VodqaBLR
Drive chrome(headless) with puppeteerDrive chrome(headless) with puppeteer
Drive chrome(headless) with puppeteer
VodqaBLR1.9K views
Api security-eic-prabath by WSO2
Api security-eic-prabathApi security-eic-prabath
Api security-eic-prabath
WSO22.7K views
The OpenID Connect Protocol by Clément OUDOT
The OpenID Connect ProtocolThe OpenID Connect Protocol
The OpenID Connect Protocol
Clément OUDOT1.8K views
[CB16] Esoteric Web Application Vulnerabilities by Andrés Riancho by CODE BLUE
[CB16] Esoteric Web Application Vulnerabilities by Andrés Riancho[CB16] Esoteric Web Application Vulnerabilities by Andrés Riancho
[CB16] Esoteric Web Application Vulnerabilities by Andrés Riancho
CODE BLUE852 views
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin by Java User Group Latvia
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry BuzdinModern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
GDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization by KAI CHU CHUNG
GDG Cloud Taipei: Meetup #52 - Istio Security: API AuthorizationGDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
GDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
KAI CHU CHUNG182 views

More from iMasters

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro by
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroiMasters
1.4K views40 slides
Postgres: wanted, beloved or dreaded? - Fabio Telles by
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesiMasters
603 views51 slides
Por que minha query esta lenta? - Suellen Moraes by
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesiMasters
370 views12 slides
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig... by
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...iMasters
298 views9 slides
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves by
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesiMasters
324 views31 slides
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -... by
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...iMasters
1.7K views52 slides

More from iMasters(20)

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro by iMasters
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
iMasters1.4K views
Postgres: wanted, beloved or dreaded? - Fabio Telles by iMasters
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio Telles
iMasters603 views
Por que minha query esta lenta? - Suellen Moraes by iMasters
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen Moraes
iMasters370 views
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig... by iMasters
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
iMasters298 views
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves by iMasters
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
iMasters324 views
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -... by iMasters
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
iMasters1.7K views
Arquitetando seus dados na prática para a LGPD - Alessandra Martins by iMasters
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
iMasters3.3K views
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil... by iMasters
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
iMasters287 views
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud by iMasters
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
iMasters950 views
Use MDD e faça as máquinas trabalharem para você - Andreza Leite by iMasters
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
iMasters682 views
Entendendo os porquês do seu servidor - Talita Bernardes by iMasters
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita Bernardes
iMasters544 views
Backend performático além do "coloca mais máquina lá" - Diana Arnos by iMasters
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana Arnos
iMasters477 views
Dicas para uma maior performance em APIs REST - Renato Groffe by iMasters
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato Groffe
iMasters595 views
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro by iMasters
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
iMasters475 views
Quem se importa com acessibilidade Web? - Mauricio Maujor by iMasters
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio Maujor
iMasters480 views
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva by iMasters
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
iMasters603 views
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti by iMasters
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
iMasters559 views
Elasticidade e engenharia de banco de dados para alta performance - Rubens G... by iMasters
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
iMasters569 views
Construindo aplicações mais confiantes - Carolina Karklis by iMasters
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina Karklis
iMasters477 views
Monitoramento de Aplicações - Felipe Regalgo by iMasters
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe Regalgo
iMasters709 views

Recently uploaded

Web Dev - 1 PPT.pdf by
Web Dev - 1 PPT.pdfWeb Dev - 1 PPT.pdf
Web Dev - 1 PPT.pdfgdsczhcet
52 views45 slides
Java Platform Approach 1.0 - Picnic Meetup by
Java Platform Approach 1.0 - Picnic MeetupJava Platform Approach 1.0 - Picnic Meetup
Java Platform Approach 1.0 - Picnic MeetupRick Ossendrijver
25 views39 slides
"Fast Start to Building on AWS", Igor Ivaniuk by
"Fast Start to Building on AWS", Igor Ivaniuk"Fast Start to Building on AWS", Igor Ivaniuk
"Fast Start to Building on AWS", Igor IvaniukFwdays
36 views76 slides
Microchip: CXL Use Cases and Enabling Ecosystem by
Microchip: CXL Use Cases and Enabling EcosystemMicrochip: CXL Use Cases and Enabling Ecosystem
Microchip: CXL Use Cases and Enabling EcosystemCXL Forum
129 views12 slides
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen... by
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...NUS-ISS
23 views70 slides
Five Things You SHOULD Know About Postman by
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About PostmanPostman
25 views43 slides

Recently uploaded(20)

Web Dev - 1 PPT.pdf by gdsczhcet
Web Dev - 1 PPT.pdfWeb Dev - 1 PPT.pdf
Web Dev - 1 PPT.pdf
gdsczhcet52 views
"Fast Start to Building on AWS", Igor Ivaniuk by Fwdays
"Fast Start to Building on AWS", Igor Ivaniuk"Fast Start to Building on AWS", Igor Ivaniuk
"Fast Start to Building on AWS", Igor Ivaniuk
Fwdays36 views
Microchip: CXL Use Cases and Enabling Ecosystem by CXL Forum
Microchip: CXL Use Cases and Enabling EcosystemMicrochip: CXL Use Cases and Enabling Ecosystem
Microchip: CXL Use Cases and Enabling Ecosystem
CXL Forum129 views
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen... by NUS-ISS
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
NUS-ISS23 views
Five Things You SHOULD Know About Postman by Postman
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About Postman
Postman25 views
"How we switched to Kanban and how it integrates with product planning", Vady... by Fwdays
"How we switched to Kanban and how it integrates with product planning", Vady..."How we switched to Kanban and how it integrates with product planning", Vady...
"How we switched to Kanban and how it integrates with product planning", Vady...
Fwdays61 views
Astera Labs: Intelligent Connectivity for Cloud and AI Infrastructure by CXL Forum
Astera Labs:  Intelligent Connectivity for Cloud and AI InfrastructureAstera Labs:  Intelligent Connectivity for Cloud and AI Infrastructure
Astera Labs: Intelligent Connectivity for Cloud and AI Infrastructure
CXL Forum125 views
Future of Learning - Khoong Chan Meng by NUS-ISS
Future of Learning - Khoong Chan MengFuture of Learning - Khoong Chan Meng
Future of Learning - Khoong Chan Meng
NUS-ISS31 views
MemVerge: Memory Viewer Software by CXL Forum
MemVerge: Memory Viewer SoftwareMemVerge: Memory Viewer Software
MemVerge: Memory Viewer Software
CXL Forum118 views
Data-centric AI and the convergence of data and model engineering: opportunit... by Paolo Missier
Data-centric AI and the convergence of data and model engineering:opportunit...Data-centric AI and the convergence of data and model engineering:opportunit...
Data-centric AI and the convergence of data and model engineering: opportunit...
Paolo Missier29 views
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV by Splunk
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
Splunk86 views
.conf Go 2023 - Data analysis as a routine by Splunk
.conf Go 2023 - Data analysis as a routine.conf Go 2023 - Data analysis as a routine
.conf Go 2023 - Data analysis as a routine
Splunk90 views
Business Analyst Series 2023 - Week 3 Session 5 by DianaGray10
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5
DianaGray10165 views
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ... by Fwdays
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ..."Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
Fwdays33 views
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad... by Fwdays
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad..."Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad...
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad...
Fwdays40 views
"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi by Fwdays
"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi
"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi
Fwdays26 views
Webinar : Competing for tomorrow’s leaders – How MENA insurers can win the wa... by The Digital Insurer
Webinar : Competing for tomorrow’s leaders – How MENA insurers can win the wa...Webinar : Competing for tomorrow’s leaders – How MENA insurers can win the wa...
Webinar : Competing for tomorrow’s leaders – How MENA insurers can win the wa...
Understanding GenAI/LLM and What is Google Offering - Felix Goh by NUS-ISS
Understanding GenAI/LLM and What is Google Offering - Felix GohUnderstanding GenAI/LLM and What is Google Offering - Felix Goh
Understanding GenAI/LLM and What is Google Offering - Felix Goh
NUS-ISS39 views
Transcript: The Details of Description Techniques tips and tangents on altern... by BookNet Canada
Transcript: The Details of Description Techniques tips and tangents on altern...Transcript: The Details of Description Techniques tips and tangents on altern...
Transcript: The Details of Description Techniques tips and tangents on altern...
BookNet Canada119 views

InterCon 2016 - Segurança de identidade digital levando em consideração uma arquitetura de microserviço

  • 1. Identity  within  Microservices Erick  Belluci Tedeschi @ericktedeschi São  Paulo,  Oct  22  2016
  • 2. Who? • PHP  Developer  since  2003 • Application  Security  since  2007 • Biker • Maker • Help  devs delivery  Secure  Applications • Help  business  to  keep  clients  data  secure
  • 3. Agenda • Microservice architecture  Version  1 • About  Tokens • OAuth  2.0 • OpenID  Connect • Authorization  Code  Flow  Example • Microservice architecture  NG!!!
  • 4. Microservice Architecture  V1 API  GatewayOAuth  Server* Account GET  /my/{user_id} Transfer POST  /transferto/{src_account}/{dst_account} Receipt GET  /receipts/{user_id} End-­‐User Bank  API  (Public) GET      /my POST  /transferto/{dst_account} GET      /receipts /token /authorize Basic  auth Basic  auth No  auth
  • 5. Microservice Architecture  V1 API  GatewayOAuth  Server* Account GET  /my/{user_id} Transfer POST  /transferto/{src_account}/{dst_account} Receipt GET  /receipts/{user_id} End-­‐User Bank  API  (Public) GET      /my POST  /transferto/{dst_account} GET      /receipts /token /authorize Basic  auth Basic  auth No  auth • Poor  logging  (audit  trail) • Poor  identification  on  microservices (X-­‐User-­‐Logged  L) • Authorization  centralized  on  API  Gateway • Microservices are  more  like  CRUDs  APIs • Microservices have  ”micro  user  repositories”  or  don’t   have  authentication/authorization • API  Gateway  have  more  responsibility  than  necessary
  • 6. Now,  let’s  take  a  look  at  the:  Token • A  piece  of stamped metal used  as  a substitute for money;  a voucher that  can  be  exchanged  for  goods  or   services  (https://en.wiktionary.org/wiki/token) • Token  By  Reference • An  opaque  string  generated  randomly • Ex.:  2YotnFZFEjr1zCsicMWpAA • Token  By  Value • A  JWT  that  contains  claims  about  the  context  of  the  token • Ex.:   eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL215LnNlcnZpY2UuY29tIiwiaWF0IjoxNDM1MTc5NjAzLCJleHA iOjE0MzUxODE0MjEsImF1ZCI6Ind3dy5zZXJ2aWNlLmNvbSIsInN1YiI6ImpvaG5kb2VAZ21haWwuY29tIiwiUm9sZSI6WyJhcHByb 3ZlciIsInZpZXdlciJdfQ.91GLvtMhhnICmqlf_RVONGw5IM9i8eeAPx2s_WpMObU
  • 7. JWT  – JSON  Web  Token eyJ0eXAiOiJKV1QiL CJhbGciOiJIUzI1NiJ 9.eyJpc3MiOiJodH RwczovL215LnNlcn ZpY2UuY29tIiwiaW F0IjoxNDM1MTc5N jAzLCJleHAiOjE0Mz UxODE0MjEsImF1Z CI6Ind3dy5zZXJ2a WNlLmNvbSIsInN1 YiI6ImpvaG5kb2VA Z21haWwuY29tIiwi Um9sZSI6WyJhcHB yb3ZlciIsInZpZXdlci JdfQ.91GLvtMhhnI Cmqlf_RVONGw5I M9i8eeAPx2s_Wp MObU { "typ":  "JWT", "alg":  "HS256" } { "iss":  "https://my.service.com", "iat":  1435179603, "exp":  1435181421, "aud":  "www.service.com", "sub":  "johndoe@gmail.com", "Role":  [ "approver", "viewer" ] } HMACSHA256( base64UrlEncode(header)  +  "."  + base64UrlEncode(payload),sharedsecret) JWT  Header JWT  Payload JWT  Signature
  • 8. The  OAuth  2.0  Authorization  Framework The  OAuth  2.0  enables  a  third-­‐party  application  to  obtain   limited  access  to  an  HTTP  service  on  behalf  of  a  resource   owner...
  • 9. OAuth  2.0  – Protocol  or  Framework? • RFC  5849:  The  OAuth  1.0  Protocol • RFC  6749:  The  OAuth  2.0  Authorization  Framework https://tools.ietf.org/html/rfc5849 …  contract,  pact,  deal   https://tools.ietf.org/html/rfc6749 …  structure,  skeleton,  chassis
  • 10. Warning:  OAuth  is  not  about  authentication
  • 11. Warning:  OAuth  is  not  about  authentication
  • 12. How  an  access_token looks  like?  (by  value  -­‐ JWT) // JWT Payload { "sub": "alice", // user id "cid": "000123", // client id "iss": "https://as.domain.com", // who issued "aud": "https://rs.domain.com", "exp": 1460345736, // expiration date "scp": ["openid","email","profile"] // scopes }
  • 13. OpenID  Connect OpenID  Connect  1.0  is  a  simple  identity  layer  on  top  of  the  OAuth  2.
  • 14. How  an  id_token looks  like?  (by  value  -­‐ JWT) { "iss": ”InstIdentRicardoGumbletonDaunt", // who issued "sub": ”4.444.444", // user identification "aud": ["cops","bank"], // where it’s used "nonce": "n-0S6_WzA2Mj", "exp": 1311281970, // 10 years "iat": 1311280970, "auth_time": 1311280969, "amr": "sign+fingerprint” //auth-methods-ref }
  • 16. A  complete  Authorization  Server • /authorize • /token • /introspection  (check  access_token) • /token_info (get  more  information  about  identity) • /revocation
  • 17. Let’s  see  how  to  get  both  access_token and   id_token using  Authorization  Code  Flow
  • 23. Resource Owner Authorization Server Resource Server Client POST  /token  HTTP/1.1 Host:  server.example.com Authorization:  Basic  czZCaGRSa3F0MzpnWDFmQmF0M2JW Content-­‐Type:  application/x-­‐www-­‐form-­‐urlencoded grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
  • 24. Resource Owner Authorization Server Resource Server Client HTTP/1.1  200  OK Content-­‐Type:  application/json;charset=UTF-­‐8 Cache-­‐Control:  no-­‐store Pragma:  no-­‐cache { "access_token":"2YotnFZFEjr1zCsicMWpAA", "token_type":"Bearer", "expires_in":3600, "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA", "id_token":   "eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzcyI6ICJodHRwOi 8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5NzYxMDAx IiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZfV3pBM k1qIiwKICJleHAiOiAxMzE.xptoxptoxpto" }
  • 26. Resource Owner Authorization Server Resource Server Client POST  /introspect  HTTP/1.1 Host:  server.example.com Authorization:  Basic  czZCaGRSa3F0MzpnWDFmQmF0M2JW Content-­‐Type:  application/x-­‐www-­‐form-­‐urlencoded token=2YotnFZFEjr1zCsicMWpAA https://tools.ietf.org/search/rfc7662 OAuth  2.0  Token  Introspection Introspection  Request
  • 27. Resource Owner Authorization Server Resource Server Client HTTP/1.1  200  OK Content-­‐Type:  application/json { "active":  true, "client_id":  "l238j323ds-­‐23ij4", "username":  "jdoe", "scope":  ”openid profile  email", "sub":  "Z5O3upPC88QrAjx00dis", "aud":  "https://protected.example.net/resource", "iss":  "https://server.example.com/", "exp":  1419356238, "iat":  1419350238, "extension_field":  "twenty-­‐seven” } https://tools.ietf.org/search/rfc7662 OAuth  2.0  Token  Introspection Introspection  Request
  • 30. Microservice Architecture  NG!!! API  Gateway Authorization Server Account GET  /my GET  /pvt/{account} Transfer POST  /transferto/{dst_account} Receipt GET  /receipts OAuth Filter OAuth Filter OAuth Filter OAuth  Filter Resource Owner Introspection/validation Bank  API  (Public) GET      /my POST  /transferto/{dst_account} GET      /receipts /token /authorize /introspect /revoke /token_info ”offline  introspection/validation” ”offline  introspection/validation”
  • 31. Microservice Architecture  NG!!! API  Gateway Authorization Server Account GET  /my GET  /pvt/{account} Transfer POST  /transferto/{dst_account} Receipt GET  /receipts OAuth Filter OAuth Filter OAuth Filter OAuth  Filter Resource Owner Introspection/validation Bank  API  (Public) GET      /my POST  /transferto/{dst_account} GET      /receipts /token /authorize /introspect /revoke /token_info ”offline  introspection/validation” ”offline  introspection/validation” • Audit  Trail  Improved • Microservices can  make  decision  based  on  the  end-­‐user   identity • Fine  grained  authorization  across  the  services • The  whole  environment  have  a  central  user  identity   repository  (OAuth+OpenID Connect  Server) • API  Gateway  is  clean/slim
  • 32. Don’t  start  from  scratch • OpenSource • Connect2ID  http://connect2id.com/ • Keycloak http://www.keycloak.org/ • MitreID Connect  https://github.com/mitreid-­‐connect/OpenID-­‐Connect-­‐Java-­‐ Spring-­‐Server • WSO2  Identity  Server  http://wso2.com/products/identity-­‐server/
  • 33. References  and  Links • OAuth  2.0:  https://tools.ietf.org/html/rfc6749 • OAuth  2.0  Bearer  Token  Usage:  https://tools.ietf.org/html/rfc6750 • OpenID  Connect  Core:  http://openid.net/specs/openid-­‐connect-­‐core-­‐1_0.html • OpenID  Connect  Discovery:  https://openid.net/specs/openid-­‐connect-­‐discovery-­‐1_0.html • JOSÉ  (JSON  Object  Signing  and  Encryption) • JSON  Web  Signature  (JWS)  https://tools.ietf.org/html/rfc7515 • JSON  Web  Encryption  (JWE)  https://tools.ietf.org/html/rfc7516 • JSON  Web  Key  (JWK)  https://tools.ietf.org/html/rfc7517 • JSON  Web  Algorithms  (JWA)  https://tools.ietf.org/html/rfc7518 • JSON  Web  Token  (JWT)  https://tools.ietf.org/html/rfc7519 • http://connect2id.com/products/nimbus-­‐jose-­‐jwt/examples/validating-­‐jwt-­‐access-­‐tokens