Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC Deployment #api

Tatsuo Kudo
Tatsuo KudoDigital Identity Professional at Authlete
Authorization Architecture Patterns: How to
Avoid Pitfalls in OAuth/OIDC Deployment
Tatsuo Kudo
Authlete, Inc.
About Me
• Tatsuo Kudo https://www.linkedin.com/in/tatsuokudo
– Sun Microsystems (1998-2008)
– Nomura Research Institute (2008-2018)
– OpenID Foundation Japan (2013-2014)
– NRI SecureTechnologies (2014-2018)
– Authlete (2018-)
• VP of Solution Strategy
2
• A Tokyo / London based company
providing “API Authorization
Backend-as-a-Service” enabling
developers to quickly and securely
implement OAuth 2.0, OpenID
Connect, Financial-grade API and
CIBA.
https://www.authlete.com/
Who is Authlete?
3
4
• OAuth / OpenID Connect (OIDC) basics
• Deployment architecture patterns in the wild
• Future-proof API authorization services
In This Talk
OAuth / OIDC Basics
6
• Client credentials e.g. API Key (and API secret)
– Simple but not scalable
How API Servers Grant Access for Clients
1. API request with
client credentials
API Client API Server
2. API response
GET /items/12345 HTTP/1.1
x-api-key: <API Key>
7
• Tokens in exchange for client credentials
– More flexible but limited to client-server authentication
How API Servers Grant Access for Clients
3. API request with token
API Client API Server
4. API response
Authorization
Server (AS)
1. Token request with
client credentials
2. Token
response
GET /items/12345 HTTP/1.1
Authorization: Bearer <Token>
POST /token HTTP/1.1
Authorization: Basic <Key:Secret>
8
• Tokens in exchange for authorization proof
– Resource owner / assertion issuer can participate access granting process
How API Servers Grant Access for Clients
5. API request with token
API Client API Server
6. API response
1. Authorization /
assertion request
Resource Owner
/ Assertion Issuer
Authorization
Server (AS)
3. Token request with
authorization code /
assertion
2. Authorization
code / assertion
4. Token
response
User
Organization
HTTP/1.1 302 Found
Location:
https://as/authorize?...
(User authentication and consent)
GET /items/12345 HTTP/1.1
Authorization: Bearer <Token>
9
• Framework for API access delegation using tokens
– RFC 6749 describes token granting process and essential grant flows such as
authorization code and client credentials
• Highly extensible for broad use cases
– Extensible grant type
– User-involved (with user agents) and unattended (service accounts for machines)
• Sister standard: OpenID Connect
– “ID Token” to convey user authentication event
from Identity Provider to Relying Party
OAuth at a Glance
• Resource Owner
e.g. end user
• User Agent
e.g. Web browser
• Client
e.g. Web application using APIs
• Authorization Server
e.g. user authentication server
• Resource Server
e.g. API server
“OAuth Dance”
Resource
Owner
User Agent Client
Authorization
Server
Resource
Server
10
Basic OAuth/OIDC
Authorization Code Grant Flow / Bearer Token
Resource
Owner
User Agent Client
Authorization
Server
Resource
Server
((Start))
Authorization request
Authorization response
Token
request
Token
response
API request
API
response
(End)
User
authentication
and consent
Authorization
Request
Authorization
Code
Authorization
Code
Access
Token
Access
Token
API Response
• ReceiveAuthorization Request
and return Authorization Code
• ReceiveAuthorization Code
and return Access Token
• ReceiveAPI Request with
Access Token and return
API response
11
Advanced OAuth/OIDC for High-StakesTransactions
FAPI (Financial-grade API)
12
https://www.authlete.com/fapi
Fintechs
Adversaries
Banks
Authorization / token request
Authorization / token response
API requests with the token
Preventing fraudulent token
exchange by signing requests
and responses
Token theft
Preventing fraudulent access
by using mutual TLS to detect
identity of the requester
Stolen tokens won’t work as
the adversaries can’t use the
signing certificate bound to
these tokens
Advanced OAuth/OIDC for “Decoupled Authentication”
CIBA (Client Initiated Backchannel Authentication)
https://www.authlete.com/ciba 13
Send $50 to Bob
Alice
Alice’s smartphone
Notify to the
bank’s app
Alice’s smart speaker
Initiate a
payment via pre-
registered bank’s
APIs
Banking APIs with CIBA
Use case 1: Voice-initiated money transfer
Send
Bob
$50 ?
Alice
Alice’s smartphone
Notify to the
payment app
Teleshopping’s call center
Initiate a
payment via pre-
registered
payment
service’s APIs
Payment’s APIs with CIBA
Use case 2: Call-center-initiated payment
Buy ?
$50
$50
14
• Handmade OAuth server was valid in the
good old days (circa early 2010’s)
• It is no longer applicable nowadays
– A lot of OAuth extensions are now emerging
• Assertionframework, PKCE,JWT client
authentication, device grant, …
– Security considerations are frequently being
updated for new use cases and threats
• Mobile app ecosystem,microservices,high-
stakes transactions, …
Building Authorization Servers From Scratch
Source: https://twitter.com/blhjelm/status/1055551254401736704,
https://hackerone.com/hacktivity?order_direction=DESC&order_field=latest_disclosable_activity_at&filter=type%3Aall&querystring=oauth
15
• Identity and access
management(IAM)
• API management
(e.g. API gateways)
• Authorization
decision service
that decides “who has
access to what in which
context” for token
requests
Services Integrated with Authorization Server
Client
Protected
Resources
Resource
Owner
Authorization
Server
IAM Service
Authorization
DecisionService
API Gateway
User
authentication
and consent
Token
request
API
request
Token
introspection
Deployment Architecture Patterns in the Wild
17
• Authorization server provides at least two
functionalities
– Protocol operations (OAuth, OIDC and their extensions)
– Token management (life cycle, clients, scopes etc.)
• Authorization server would often be a part of other
system
– Application runtime
– IAM system
– API gateways
Where Authorization Server Belongs
Authorization Server
Protocol
Operations
Token
Management
18
• Pros
– Application developers
don’t need to handle
OAuth
• Cons
– Runtime vendors
usually don’t consider
OAuth functionality with
high priority; sometimes
obsolete
AS Embedded in Application Runtime
Client Applications
Resource
Owner
Authorization
Server
Subsystem
IAM Service
Authorization
Decision
Implementation
API Endpoints
Application Runtime
User
authentication
and consent
Token
request
API
request
IAM System
19
• Pros
– Usually IAM vendors are
serious (and competing)in
adopting open standards
• Cons
– User management and
authentication services are
tightly integrated with AS
– Authorization decision
needs to be implemented
on the vendor’s proprietary
extension framework
AS Separated as IAM System
Client
Protected
Resources
Resource
Owner
Authorization
Server
Subsystem
User
Authentication
Subsystem
Authorization
Decision
Subsystem
API Gateway
User
authentication
and consent
Token
request
API
request
Token
introspection
20
• Pros
– Familiar with API operations
• Cons
– API gateway vendors
usually don’t consider
OAuth functionality with high
priority; sometimesobsolete
– Authorization decision
needs to be implemented on
the vendor’s proprietary
extension framework
AS Integrated with API Gateways
Client
Protected
Resources
Resource
Owner
Authorization
Server
Subsystem
IAM Service
Authorization
Decision
Subsystem
API Endpoint
Subsystem
API Gateway
User
authentication
and consent
Token
request
API
request
21
• Freedom of choice for
development
• Offloading cumbersome
protocol operations and
token management
• Leveraging the most
suited solutions and/or
other subsystems within
organizations
What Developers Really Needed
Client
Protected
Resources
Resource
Owner
Authorization
Server
IAM Service
Authorization
DecisionService
API Gateway
Future-Proof API Authorization Services
23
• Deploying a “backend”
behind your authorization
server
• Your authorization server
acting as “frontend”
• No need to consider
“what to do next with
what methods” on
OAuth/OIDC protocol
processing
Introducing Semi-hosted Pattern
Client
Protected
Resources
Resource
Owner
Authorization
Server
Frontend
IAM Service
Authorization
DecisionService
API Gateway
Authorization
Server
Backend
User
authentication
and consent
Token
request
API
request
Token
introspection
Solution Example: Authlete
Semi-Hosted Authorization Server Solution
24
Authlete Customer’s EnvironmentAPI Clients
Existing Services
© 2018 Authlete, Inc.
Websites
Mobile
Networked
Devices
Authorization Server
Authorization Decision
User
Authentication
Consent
Management
Entitlement
Management
API Servers / Gateways
/data /f unction /transaction
Authlete
Authorization
BackendAPIs
Authorization
Information
(e.g. Tokens)
Database
Authorization Request
API Access
Authorization Status
Check
OAuth/OIDC Processing Request
Authorization
Frontend
Leveraging
existing services Authorization decision logic with
no dependency on Authlete
Separation of operation
between authorization
server and API servers
Externalizing cumbersome
OAuth/OIDC processing
and token management
/…
OSS components
available via GitHub
Sequence is Simple - Implementation is Not
25
Resource
Owner
User Agent Client
Authorization
Server
Resource
Server
Processing Authorization Request
Issuing Authorization Code
Processing Token Request
Access Token Introspection
((Start))
Authorization request
Authorization response
Token
request
Token
response
API request
API
response
(End)
User
authentication
and consent
Offloading These Tasks to Authlete
Resource
Owner
User Agent Client
Authorization
Server
Resource
Server
Authlete API
Processing
Authorization
Request
Issuing
Authorization
Code
Processing Token
Request
Access
Token
Intro-
spection
/auth/authorizationPOST
/auth/authorization/issuePOST
/auth/tokenPOST
/auth/introspectionPOST
(Start)
Authorization
request
Authorization
response
Token
request
Token
response
API
request
API
response
(End)
User
authentication
and consent
26
1. Processing Authorization Request
Resource
Owner
User Agent Client
Authorization
Server
Resource
Server
Authlete
Authlete
{ "parameters":
"response_type=code&client_id=57297408867&red
irect_uri=https%3A%2F%2Fapi.authlete.com%2Fap
i%2Fmock%2Fredirection%2F10167240235" }'
Send query parameters “as is”
to Authlete
/auth/authorizationPOST
Authlete
{
"action": "INTERACTION",
"client": {
(OAuth Client information)
},
"service": {
(Authlete Service information)
},
"ticket":
"c4iy3TWGn74UMO7ihRl0ZS8OEUzV9axBlBbJbqxH-9Q"
[…]
}
Return a ticket and information
for authentication and consent
((Start))
Authorization request
Authorization response
Token
request
Token
response
API request
API
response
(End)
User
authentication
and consent
Processing
Authorization
Request
27
2. Issuing Authorization Code
Resource
Owner
User Agent Client
Authorization
Server
Resource
Server
Authlete
Authlete
{
"ticket": "FFgB9gwb_WXh6g1u-UQ8ZI-d_k4B-o-
cm7RkVzI8Vnc",
"subject": "78yM7DpDNgUTF7h4”
}
Send the ticket and frontend-
generated user identifier
/auth/authorization/issuePOST
Authlete
{
"action": "LOCATION",
"responseContent":
"https://api.authlete.com/api/mock/redirectio
n/10167240235?code=_VSzpgug3OpdUymcbLYJjH1v9t
E4hSPaxX_pSkxUUyk"
[…]
}
Return response contentto be
sent back to the client
((Start))
Authorization request
Authorization response
Token
request
Token
response
API request
API
response
(End)
User
authentication
and consent
Issuing
Authorization
Code and Tokens
28
3. Processing Token Request
Resource
Owner
User Agent Client
Authorization
Server
Resource
Server
Authlete
Authlete
{ "parameters":
"grant_type=authorization_code&code=DkKMvKzrR
AsWErsWCChNX_gydqqgA55AW2OJlXmNTQI&redirect_u
ri=https%3A%2F%2Fapi.authlete.com%2Fapi%2Fmoc
k%2Fredirection%2F10167240235",
"clientId": 57297408867,
"clientSecret": "[…]", […] }
Send query parameters “as is”
to Authlete
/auth/tokenPOST
Authlete
{
"responseContent":
"{¥"scope¥":null,¥"expires_in¥":86400,¥"token
_type¥":¥"Bearer¥",¥"refresh_token¥":¥"sdQqY9
Tbhsq6ZsWm1rZLgW4A3yxIk6RcgmmexHZ9BXB¥",¥"acc
ess_token¥":¥"rt5bUJsGfS17YCSmYGtgelMtokTLdoC
mBe4VUFCk1YZ¥"}",
[…]
}
Return response contentto be
sent back to the client
((Start))
Authorization request
Authorization response
Token
request
Token
response
API request
API
response
(End)
User
authentication
and consent
Processing Token
Request
29
4. Access Token Introspection
Resource
Owner
User Agent Client
Authorization
Server
Resource
Server
Authlete
Authlete
{ "token": "VFGsNK-
5sXiqterdaR7b5QbRX9VTwVCQB87jbr2_xAI" }
Send a token for introspection
/auth/introspectionPOST
Authlete
{
"type": "introspectionResponse",
"resultCode": "A056001",
"resultMessage": "[A056001] The access
token is valid.",
"action": "OK",
"clientId": 57297408867,
"clientIdAliasUsed": false,
"existent": true,
"expiresAt": 1511252965000,
"refreshable": true,
"responseContent": "Bearer
error=¥"invalid_request¥"",
"subject": "78yM7DpDNgUTF7h4",
"sufficient": true,
"usable": true
}
Return details associated with
the token
((Start))
Authorization request
Authorization response
Token
request
Token
response
API request
API
response
(End)
User
authentication
and consent
Access
Token
Intro-
spection
30
• They have been using Authlete instead
of Azure API Management’s built-in
OAuth 2.0
– It didn’t meet their requirement for open
banking APIs
• They haven’t deployed any IAM for the
API infrastructure
– Their existing internet banking system does
user authentication and consent as well as
entitlement management
Semi-Hosted Pattern in Action: Seven Bank
Sources for the diagrams: https://www.isi d.co.j p/case/case/2018sevenbank.html,
https://www.isid.co.j p/news/release/2018/0919.html
Client (Bank
App and
Third-Party
Providers)
Other Apps
Bank
Customers
Authorization
Server
Frontend
Internet Banking
System
Authorization
Decision
Service
API Management
Authlete
Microsoft Azure
User
authentication
and consent
API
request
Token
request
31
Takeaways
33
• Examine which pattern is the best for
your context
– Application runtime if API authorization
doesn’tmatter
– IAM system if you want to make AS tightly
coupled with user authentication service
– API gatewaysif you want build everything
on those infrastructure
• If none of options above works for you,
do consider semi-hosted pattern
– Take back the right to implementyour own
authorization servers
Build a Future-Proof Authorization Server
Authorization
Server
FRONTEND
Authlete
API
BACKEND
Semi-hostedArchitecture
- Token management
- OAuth/OIDC
protocol processing
- UI/UX
- Authorization
decision logic
- Identity & access
management
34
• Justin Richer (@justin__richer)’s blog entry
on semi-hosted service
– https://link.medium.com/SPXhiVMfz0
• Taka Kawasaki (@darutk)’s blog entry
on its implementation
– https://link.medium.com/ROV8nUTfz0
• Authlete
– https://www.authlete.com/
Resources
Thank You
www.authlete.com
www.linkedin.com/in/tatsuokudo
1 de 35

Recomendados

Azure ADとIdentity管理 por
Azure ADとIdentity管理Azure ADとIdentity管理
Azure ADとIdentity管理Naohiro Fujie
25K vistas71 diapositivas
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15 por
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15OpenID Foundation Japan
1.2K vistas27 diapositivas
OpenID Connect Explained por
OpenID Connect ExplainedOpenID Connect Explained
OpenID Connect ExplainedVladimir Dzhuvinov
11.3K vistas31 diapositivas
Comprehensive overview FAPI 1 and FAPI 2 por
Comprehensive overview FAPI 1 and FAPI 2Comprehensive overview FAPI 1 and FAPI 2
Comprehensive overview FAPI 1 and FAPI 2Torsten Lodderstedt
182 vistas25 diapositivas
FIDOセキュリティ認定の概要と最新状況 por
FIDOセキュリティ認定の概要と最新状況FIDOセキュリティ認定の概要と最新状況
FIDOセキュリティ認定の概要と最新状況FIDO Alliance
823 vistas15 diapositivas
OpenID 4 Verifiable Credentials + HAIP (Update) por
OpenID 4 Verifiable Credentials + HAIP (Update)OpenID 4 Verifiable Credentials + HAIP (Update)
OpenID 4 Verifiable Credentials + HAIP (Update)Torsten Lodderstedt
466 vistas49 diapositivas

Más contenido relacionado

La actualidad más candente

Azure AD B2CにIdPを色々と繋いでみる por
Azure AD B2CにIdPを色々と繋いでみるAzure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみるNaohiro Fujie
1.3K vistas47 diapositivas
JavaユーザのためのVSCodeのススメ por
JavaユーザのためのVSCodeのススメJavaユーザのためのVSCodeのススメ
JavaユーザのためのVSCodeのススメSatoshi Takami
806 vistas16 diapositivas
プロトコルから見るID連携 por
プロトコルから見るID連携プロトコルから見るID連携
プロトコルから見るID連携Naohiro Fujie
10.2K vistas62 diapositivas
次世代KYCと自己主権型アイデンティティの動向 por
次世代KYCと自己主権型アイデンティティの動向次世代KYCと自己主権型アイデンティティの動向
次世代KYCと自己主権型アイデンティティの動向Naohiro Fujie
3.8K vistas45 diapositivas
OpenID ConnectとSCIMの標準化動向 por
OpenID ConnectとSCIMの標準化動向OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向Tatsuo Kudo
17.2K vistas21 diapositivas
OpenID for Verifiable Credentials @ IIW 36 por
OpenID for Verifiable Credentials @ IIW 36OpenID for Verifiable Credentials @ IIW 36
OpenID for Verifiable Credentials @ IIW 36Torsten Lodderstedt
243 vistas39 diapositivas

La actualidad más candente(20)

Azure AD B2CにIdPを色々と繋いでみる por Naohiro Fujie
Azure AD B2CにIdPを色々と繋いでみるAzure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみる
Naohiro Fujie1.3K vistas
JavaユーザのためのVSCodeのススメ por Satoshi Takami
JavaユーザのためのVSCodeのススメJavaユーザのためのVSCodeのススメ
JavaユーザのためのVSCodeのススメ
Satoshi Takami806 vistas
プロトコルから見るID連携 por Naohiro Fujie
プロトコルから見るID連携プロトコルから見るID連携
プロトコルから見るID連携
Naohiro Fujie10.2K vistas
次世代KYCと自己主権型アイデンティティの動向 por Naohiro Fujie
次世代KYCと自己主権型アイデンティティの動向次世代KYCと自己主権型アイデンティティの動向
次世代KYCと自己主権型アイデンティティの動向
Naohiro Fujie3.8K vistas
OpenID ConnectとSCIMの標準化動向 por Tatsuo Kudo
OpenID ConnectとSCIMの標準化動向OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向
Tatsuo Kudo17.2K vistas
実装して理解するLINE LoginとOpenID Connect入門 por Naohiro Fujie
実装して理解するLINE LoginとOpenID Connect入門実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門
Naohiro Fujie21.4K vistas
OAuth 2.0の概要とセキュリティ por Hiroshi Hayakawa
OAuth 2.0の概要とセキュリティOAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティ
Hiroshi Hayakawa18.8K vistas
I'm in ur browser, pwning your stuff - Attacking (with) Google Chrome Extensions por Krzysztof Kotowicz
I'm in ur browser, pwning your stuff - Attacking (with) Google Chrome ExtensionsI'm in ur browser, pwning your stuff - Attacking (with) Google Chrome Extensions
I'm in ur browser, pwning your stuff - Attacking (with) Google Chrome Extensions
Krzysztof Kotowicz9.7K vistas
RIA Cross Domain Policy por NSConclave
RIA Cross Domain PolicyRIA Cross Domain Policy
RIA Cross Domain Policy
NSConclave802 vistas
MicrosoftのDID/VC実装概要 por Naohiro Fujie
MicrosoftのDID/VC実装概要MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要
Naohiro Fujie3.9K vistas
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014 por Nov Matake
SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
Nov Matake98.8K vistas
Welcome to the Jungle: Pentesting AWS por Mike Felch
Welcome to the Jungle: Pentesting AWSWelcome to the Jungle: Pentesting AWS
Welcome to the Jungle: Pentesting AWS
Mike Felch4.5K vistas
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現 por junichi anno
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
junichi anno19K vistas
[오픈소스컨설팅] EFK Stack 소개와 설치 방법 por Open Source Consulting
[오픈소스컨설팅] EFK Stack 소개와 설치 방법[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법

Similar a Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC Deployment #api

CIS 2015 Extreme OAuth - Paul Meyer por
CIS 2015 Extreme OAuth - Paul MeyerCIS 2015 Extreme OAuth - Paul Meyer
CIS 2015 Extreme OAuth - Paul MeyerCloudIDSummit
630 vistas27 diapositivas
CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe... por
CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe...CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe...
CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe...CloudIDSummit
12.5K vistas52 diapositivas
CIS13: Introduction to OAuth 2.0 por
CIS13: Introduction to OAuth 2.0CIS13: Introduction to OAuth 2.0
CIS13: Introduction to OAuth 2.0CloudIDSummit
2.9K vistas34 diapositivas
Oauth Nightmares Abstract OAuth Nightmares por
Oauth Nightmares Abstract OAuth Nightmares Oauth Nightmares Abstract OAuth Nightmares
Oauth Nightmares Abstract OAuth Nightmares Nino Ho
251 vistas50 diapositivas
Why Assertion-based Access Token is preferred to Handle-based one? por
Why Assertion-based Access Token is preferred to Handle-based one?Why Assertion-based Access Token is preferred to Handle-based one?
Why Assertion-based Access Token is preferred to Handle-based one?Hitachi, Ltd. OSS Solution Center.
157 vistas34 diapositivas
2022 APIsecure_Why Assertion-based Access Token is preferred to Handle-based ... por
2022 APIsecure_Why Assertion-based Access Token is preferred to Handle-based ...2022 APIsecure_Why Assertion-based Access Token is preferred to Handle-based ...
2022 APIsecure_Why Assertion-based Access Token is preferred to Handle-based ...APIsecure_ Official
11 vistas34 diapositivas

Similar a Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC Deployment #api(20)

CIS 2015 Extreme OAuth - Paul Meyer por CloudIDSummit
CIS 2015 Extreme OAuth - Paul MeyerCIS 2015 Extreme OAuth - Paul Meyer
CIS 2015 Extreme OAuth - Paul Meyer
CloudIDSummit630 vistas
CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe... por CloudIDSummit
CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe...CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe...
CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe...
CloudIDSummit12.5K vistas
CIS13: Introduction to OAuth 2.0 por CloudIDSummit
CIS13: Introduction to OAuth 2.0CIS13: Introduction to OAuth 2.0
CIS13: Introduction to OAuth 2.0
CloudIDSummit2.9K vistas
Oauth Nightmares Abstract OAuth Nightmares por Nino Ho
Oauth Nightmares Abstract OAuth Nightmares Oauth Nightmares Abstract OAuth Nightmares
Oauth Nightmares Abstract OAuth Nightmares
Nino Ho251 vistas
2022 APIsecure_Why Assertion-based Access Token is preferred to Handle-based ... por APIsecure_ Official
2022 APIsecure_Why Assertion-based Access Token is preferred to Handle-based ...2022 APIsecure_Why Assertion-based Access Token is preferred to Handle-based ...
2022 APIsecure_Why Assertion-based Access Token is preferred to Handle-based ...
API, Integration, and SOA Convergence por Kasun Indrasiri
API, Integration, and SOA ConvergenceAPI, Integration, and SOA Convergence
API, Integration, and SOA Convergence
Kasun Indrasiri2.8K vistas
Intro to OAuth2 and OpenID Connect por LiamWadman
Intro to OAuth2 and OpenID ConnectIntro to OAuth2 and OpenID Connect
Intro to OAuth2 and OpenID Connect
LiamWadman145 vistas
How to Build, Manage, and Promote APIs por WSO2
How to Build, Manage, and Promote APIsHow to Build, Manage, and Promote APIs
How to Build, Manage, and Promote APIs
WSO21.8K vistas
apidays Paris 2022 - Securing APIs in Open Banking, Takashi Norimatsu, Hitachi por apidays
apidays Paris 2022 - Securing APIs in Open Banking, Takashi Norimatsu, Hitachiapidays Paris 2022 - Securing APIs in Open Banking, Takashi Norimatsu, Hitachi
apidays Paris 2022 - Securing APIs in Open Banking, Takashi Norimatsu, Hitachi
apidays48 vistas
Mobile Authentication - Onboarding, best practices & anti-patterns por Pieter Ennes
Mobile Authentication - Onboarding, best practices & anti-patternsMobile Authentication - Onboarding, best practices & anti-patterns
Mobile Authentication - Onboarding, best practices & anti-patterns
Pieter Ennes1.2K vistas
Oauth2 and OWSM OAuth2 support por Gaurav Sharma
Oauth2 and OWSM OAuth2 supportOauth2 and OWSM OAuth2 support
Oauth2 and OWSM OAuth2 support
Gaurav Sharma4K vistas
An Authentication and Authorization Architecture for a Microservices World por VMware Tanzu
An Authentication and Authorization Architecture for a Microservices WorldAn Authentication and Authorization Architecture for a Microservices World
An Authentication and Authorization Architecture for a Microservices World
VMware Tanzu12.6K vistas
Authlete: API Authorization Enabler for API Economy por Tatsuo Kudo
Authlete: API Authorization Enabler for API EconomyAuthlete: API Authorization Enabler for API Economy
Authlete: API Authorization Enabler for API Economy
Tatsuo Kudo516 vistas

Más de Tatsuo Kudo

Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」 por
Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」
Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」Tatsuo Kudo
258 vistas22 diapositivas
金融APIセキュリティの動向・事例と今後の方向性 por
金融APIセキュリティの動向・事例と今後の方向性金融APIセキュリティの動向・事例と今後の方向性
金融APIセキュリティの動向・事例と今後の方向性Tatsuo Kudo
481 vistas44 diapositivas
Client Initiated Backchannel Authentication (CIBA) and Authlete’s Approach por
Client Initiated Backchannel Authentication (CIBA) and Authlete’s ApproachClient Initiated Backchannel Authentication (CIBA) and Authlete’s Approach
Client Initiated Backchannel Authentication (CIBA) and Authlete’s ApproachTatsuo Kudo
238 vistas11 diapositivas
In-house OAuth/OIDC Infrastructure as a Competitive Advantage #eic2021 por
In-house OAuth/OIDC Infrastructure as a Competitive Advantage #eic2021In-house OAuth/OIDC Infrastructure as a Competitive Advantage #eic2021
In-house OAuth/OIDC Infrastructure as a Competitive Advantage #eic2021Tatsuo Kudo
650 vistas13 diapositivas
銀行 API における OAuth 2.0 / FAPI の動向 #openid #bizday por
銀行 API における OAuth 2.0 / FAPI の動向 #openid #bizday銀行 API における OAuth 2.0 / FAPI の動向 #openid #bizday
銀行 API における OAuth 2.0 / FAPI の動向 #openid #bizdayTatsuo Kudo
803 vistas33 diapositivas
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete por
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authleteいまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authleteTatsuo Kudo
1.9K vistas71 diapositivas

Más de Tatsuo Kudo(20)

Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」 por Tatsuo Kudo
Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」
Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」
Tatsuo Kudo258 vistas
金融APIセキュリティの動向・事例と今後の方向性 por Tatsuo Kudo
金融APIセキュリティの動向・事例と今後の方向性金融APIセキュリティの動向・事例と今後の方向性
金融APIセキュリティの動向・事例と今後の方向性
Tatsuo Kudo481 vistas
Client Initiated Backchannel Authentication (CIBA) and Authlete’s Approach por Tatsuo Kudo
Client Initiated Backchannel Authentication (CIBA) and Authlete’s ApproachClient Initiated Backchannel Authentication (CIBA) and Authlete’s Approach
Client Initiated Backchannel Authentication (CIBA) and Authlete’s Approach
Tatsuo Kudo238 vistas
In-house OAuth/OIDC Infrastructure as a Competitive Advantage #eic2021 por Tatsuo Kudo
In-house OAuth/OIDC Infrastructure as a Competitive Advantage #eic2021In-house OAuth/OIDC Infrastructure as a Competitive Advantage #eic2021
In-house OAuth/OIDC Infrastructure as a Competitive Advantage #eic2021
Tatsuo Kudo650 vistas
銀行 API における OAuth 2.0 / FAPI の動向 #openid #bizday por Tatsuo Kudo
銀行 API における OAuth 2.0 / FAPI の動向 #openid #bizday銀行 API における OAuth 2.0 / FAPI の動向 #openid #bizday
銀行 API における OAuth 2.0 / FAPI の動向 #openid #bizday
Tatsuo Kudo803 vistas
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete por Tatsuo Kudo
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authleteいまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
Tatsuo Kudo1.9K vistas
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside por Tatsuo Kudo
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_insideAuthlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Tatsuo Kudo1.9K vistas
Financial-grade API Hands-on with Authlete por Tatsuo Kudo
Financial-grade API Hands-on with AuthleteFinancial-grade API Hands-on with Authlete
Financial-grade API Hands-on with Authlete
Tatsuo Kudo499 vistas
英国オープンバンキング技術仕様の概要 por Tatsuo Kudo
英国オープンバンキング技術仕様の概要英国オープンバンキング技術仕様の概要
英国オープンバンキング技術仕様の概要
Tatsuo Kudo2.5K vistas
オープン API と Authlete のソリューション por Tatsuo Kudo
オープン API と Authlete のソリューションオープン API と Authlete のソリューション
オープン API と Authlete のソリューション
Tatsuo Kudo1.6K vistas
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション por Tatsuo Kudo
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションOAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
Tatsuo Kudo3.6K vistas
#OAuth Security Workshop 2019 Recap @ #Authlete Partner Meetup Spring 2019 por Tatsuo Kudo
#OAuth Security Workshop 2019 Recap @ #Authlete Partner Meetup Spring 2019#OAuth Security Workshop 2019 Recap @ #Authlete Partner Meetup Spring 2019
#OAuth Security Workshop 2019 Recap @ #Authlete Partner Meetup Spring 2019
Tatsuo Kudo2.6K vistas
APIエコノミー時代の認証・認可 por Tatsuo Kudo
APIエコノミー時代の認証・認可APIエコノミー時代の認証・認可
APIエコノミー時代の認証・認可
Tatsuo Kudo2.6K vistas
CIBA (Client Initiated Backchannel Authentication) の可能性 #authlete #api #oauth... por Tatsuo Kudo
CIBA (Client Initiated Backchannel Authentication) の可能性 #authlete #api #oauth...CIBA (Client Initiated Backchannel Authentication) の可能性 #authlete #api #oauth...
CIBA (Client Initiated Backchannel Authentication) の可能性 #authlete #api #oauth...
Tatsuo Kudo6.6K vistas
Japan/UK Open Banking and APIs Summit 2018 TOI por Tatsuo Kudo
Japan/UK Open Banking and APIs Summit 2018 TOIJapan/UK Open Banking and APIs Summit 2018 TOI
Japan/UK Open Banking and APIs Summit 2018 TOI
Tatsuo Kudo1.1K vistas
Trends in Banking APIs por Tatsuo Kudo
Trends in Banking APIsTrends in Banking APIs
Trends in Banking APIs
Tatsuo Kudo1.1K vistas
銀行APIのトレンド #fapisum por Tatsuo Kudo
銀行APIのトレンド #fapisum銀行APIのトレンド #fapisum
銀行APIのトレンド #fapisum
Tatsuo Kudo3.6K vistas
アイデンティティ (ID) 技術の最新動向とこれから por Tatsuo Kudo
アイデンティティ (ID) 技術の最新動向とこれからアイデンティティ (ID) 技術の最新動向とこれから
アイデンティティ (ID) 技術の最新動向とこれから
Tatsuo Kudo8.5K vistas
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws por Tatsuo Kudo
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawawsOAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
Tatsuo Kudo13.4K vistas
OAuth Security Workshop 2017 #osw17 por Tatsuo Kudo
OAuth Security Workshop 2017 #osw17OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17
Tatsuo Kudo2.1K vistas

Último

40th TWNIC Open Policy Meeting: APNIC PDP update por
40th TWNIC Open Policy Meeting: APNIC PDP update40th TWNIC Open Policy Meeting: APNIC PDP update
40th TWNIC Open Policy Meeting: APNIC PDP updateAPNIC
151 vistas20 diapositivas
Liberando a produccion con confidencia.pdf por
Liberando a produccion con confidencia.pdfLiberando a produccion con confidencia.pdf
Liberando a produccion con confidencia.pdfAndres Almiray
8 vistas49 diapositivas
Penetration Testing for Cybersecurity Professionals por
Penetration Testing for Cybersecurity ProfessionalsPenetration Testing for Cybersecurity Professionals
Penetration Testing for Cybersecurity Professionals211 Check
52 vistas17 diapositivas
WITS Deck por
WITS DeckWITS Deck
WITS DeckW.I.T.S.
37 vistas22 diapositivas
The Dark Web : Hidden Services por
The Dark Web : Hidden ServicesThe Dark Web : Hidden Services
The Dark Web : Hidden ServicesAnshu Singh
23 vistas24 diapositivas
Cracking the Code Decoding Leased Line Quotes for Connectivity Excellence.pptx por
Cracking the Code Decoding Leased Line Quotes for Connectivity Excellence.pptxCracking the Code Decoding Leased Line Quotes for Connectivity Excellence.pptx
Cracking the Code Decoding Leased Line Quotes for Connectivity Excellence.pptxLeasedLinesQuote
5 vistas8 diapositivas

Último(15)

40th TWNIC Open Policy Meeting: APNIC PDP update por APNIC
40th TWNIC Open Policy Meeting: APNIC PDP update40th TWNIC Open Policy Meeting: APNIC PDP update
40th TWNIC Open Policy Meeting: APNIC PDP update
APNIC151 vistas
Liberando a produccion con confidencia.pdf por Andres Almiray
Liberando a produccion con confidencia.pdfLiberando a produccion con confidencia.pdf
Liberando a produccion con confidencia.pdf
Andres Almiray8 vistas
Penetration Testing for Cybersecurity Professionals por 211 Check
Penetration Testing for Cybersecurity ProfessionalsPenetration Testing for Cybersecurity Professionals
Penetration Testing for Cybersecurity Professionals
211 Check52 vistas
WITS Deck por W.I.T.S.
WITS DeckWITS Deck
WITS Deck
W.I.T.S.37 vistas
The Dark Web : Hidden Services por Anshu Singh
The Dark Web : Hidden ServicesThe Dark Web : Hidden Services
The Dark Web : Hidden Services
Anshu Singh23 vistas
Cracking the Code Decoding Leased Line Quotes for Connectivity Excellence.pptx por LeasedLinesQuote
Cracking the Code Decoding Leased Line Quotes for Connectivity Excellence.pptxCracking the Code Decoding Leased Line Quotes for Connectivity Excellence.pptx
Cracking the Code Decoding Leased Line Quotes for Connectivity Excellence.pptx
LeasedLinesQuote5 vistas
40th TWNIC OPM: On LEOs (Low Earth Orbits) and Starlink Download por APNIC
40th TWNIC OPM: On LEOs (Low Earth Orbits) and Starlink Download40th TWNIC OPM: On LEOs (Low Earth Orbits) and Starlink Download
40th TWNIC OPM: On LEOs (Low Earth Orbits) and Starlink Download
APNIC159 vistas
cis5-Project-11a-Harry Lai por harrylai126
cis5-Project-11a-Harry Laicis5-Project-11a-Harry Lai
cis5-Project-11a-Harry Lai
harrylai1269 vistas
40th TWNIC Open Policy Meeting: A quick look at QUIC por APNIC
40th TWNIC Open Policy Meeting: A quick look at QUIC40th TWNIC Open Policy Meeting: A quick look at QUIC
40th TWNIC Open Policy Meeting: A quick look at QUIC
APNIC152 vistas
ATPMOUSE_융합2조.pptx por kts120898
ATPMOUSE_융합2조.pptxATPMOUSE_융합2조.pptx
ATPMOUSE_융합2조.pptx
kts12089835 vistas

Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC Deployment #api

  • 1. Authorization Architecture Patterns: How to Avoid Pitfalls in OAuth/OIDC Deployment Tatsuo Kudo Authlete, Inc.
  • 2. About Me • Tatsuo Kudo https://www.linkedin.com/in/tatsuokudo – Sun Microsystems (1998-2008) – Nomura Research Institute (2008-2018) – OpenID Foundation Japan (2013-2014) – NRI SecureTechnologies (2014-2018) – Authlete (2018-) • VP of Solution Strategy 2
  • 3. • A Tokyo / London based company providing “API Authorization Backend-as-a-Service” enabling developers to quickly and securely implement OAuth 2.0, OpenID Connect, Financial-grade API and CIBA. https://www.authlete.com/ Who is Authlete? 3
  • 4. 4 • OAuth / OpenID Connect (OIDC) basics • Deployment architecture patterns in the wild • Future-proof API authorization services In This Talk
  • 5. OAuth / OIDC Basics
  • 6. 6 • Client credentials e.g. API Key (and API secret) – Simple but not scalable How API Servers Grant Access for Clients 1. API request with client credentials API Client API Server 2. API response GET /items/12345 HTTP/1.1 x-api-key: <API Key>
  • 7. 7 • Tokens in exchange for client credentials – More flexible but limited to client-server authentication How API Servers Grant Access for Clients 3. API request with token API Client API Server 4. API response Authorization Server (AS) 1. Token request with client credentials 2. Token response GET /items/12345 HTTP/1.1 Authorization: Bearer <Token> POST /token HTTP/1.1 Authorization: Basic <Key:Secret>
  • 8. 8 • Tokens in exchange for authorization proof – Resource owner / assertion issuer can participate access granting process How API Servers Grant Access for Clients 5. API request with token API Client API Server 6. API response 1. Authorization / assertion request Resource Owner / Assertion Issuer Authorization Server (AS) 3. Token request with authorization code / assertion 2. Authorization code / assertion 4. Token response User Organization HTTP/1.1 302 Found Location: https://as/authorize?... (User authentication and consent) GET /items/12345 HTTP/1.1 Authorization: Bearer <Token>
  • 9. 9 • Framework for API access delegation using tokens – RFC 6749 describes token granting process and essential grant flows such as authorization code and client credentials • Highly extensible for broad use cases – Extensible grant type – User-involved (with user agents) and unattended (service accounts for machines) • Sister standard: OpenID Connect – “ID Token” to convey user authentication event from Identity Provider to Relying Party OAuth at a Glance
  • 10. • Resource Owner e.g. end user • User Agent e.g. Web browser • Client e.g. Web application using APIs • Authorization Server e.g. user authentication server • Resource Server e.g. API server “OAuth Dance” Resource Owner User Agent Client Authorization Server Resource Server 10
  • 11. Basic OAuth/OIDC Authorization Code Grant Flow / Bearer Token Resource Owner User Agent Client Authorization Server Resource Server ((Start)) Authorization request Authorization response Token request Token response API request API response (End) User authentication and consent Authorization Request Authorization Code Authorization Code Access Token Access Token API Response • ReceiveAuthorization Request and return Authorization Code • ReceiveAuthorization Code and return Access Token • ReceiveAPI Request with Access Token and return API response 11
  • 12. Advanced OAuth/OIDC for High-StakesTransactions FAPI (Financial-grade API) 12 https://www.authlete.com/fapi Fintechs Adversaries Banks Authorization / token request Authorization / token response API requests with the token Preventing fraudulent token exchange by signing requests and responses Token theft Preventing fraudulent access by using mutual TLS to detect identity of the requester Stolen tokens won’t work as the adversaries can’t use the signing certificate bound to these tokens
  • 13. Advanced OAuth/OIDC for “Decoupled Authentication” CIBA (Client Initiated Backchannel Authentication) https://www.authlete.com/ciba 13 Send $50 to Bob Alice Alice’s smartphone Notify to the bank’s app Alice’s smart speaker Initiate a payment via pre- registered bank’s APIs Banking APIs with CIBA Use case 1: Voice-initiated money transfer Send Bob $50 ? Alice Alice’s smartphone Notify to the payment app Teleshopping’s call center Initiate a payment via pre- registered payment service’s APIs Payment’s APIs with CIBA Use case 2: Call-center-initiated payment Buy ? $50 $50
  • 14. 14 • Handmade OAuth server was valid in the good old days (circa early 2010’s) • It is no longer applicable nowadays – A lot of OAuth extensions are now emerging • Assertionframework, PKCE,JWT client authentication, device grant, … – Security considerations are frequently being updated for new use cases and threats • Mobile app ecosystem,microservices,high- stakes transactions, … Building Authorization Servers From Scratch Source: https://twitter.com/blhjelm/status/1055551254401736704, https://hackerone.com/hacktivity?order_direction=DESC&order_field=latest_disclosable_activity_at&filter=type%3Aall&querystring=oauth
  • 15. 15 • Identity and access management(IAM) • API management (e.g. API gateways) • Authorization decision service that decides “who has access to what in which context” for token requests Services Integrated with Authorization Server Client Protected Resources Resource Owner Authorization Server IAM Service Authorization DecisionService API Gateway User authentication and consent Token request API request Token introspection
  • 17. 17 • Authorization server provides at least two functionalities – Protocol operations (OAuth, OIDC and their extensions) – Token management (life cycle, clients, scopes etc.) • Authorization server would often be a part of other system – Application runtime – IAM system – API gateways Where Authorization Server Belongs Authorization Server Protocol Operations Token Management
  • 18. 18 • Pros – Application developers don’t need to handle OAuth • Cons – Runtime vendors usually don’t consider OAuth functionality with high priority; sometimes obsolete AS Embedded in Application Runtime Client Applications Resource Owner Authorization Server Subsystem IAM Service Authorization Decision Implementation API Endpoints Application Runtime User authentication and consent Token request API request
  • 19. IAM System 19 • Pros – Usually IAM vendors are serious (and competing)in adopting open standards • Cons – User management and authentication services are tightly integrated with AS – Authorization decision needs to be implemented on the vendor’s proprietary extension framework AS Separated as IAM System Client Protected Resources Resource Owner Authorization Server Subsystem User Authentication Subsystem Authorization Decision Subsystem API Gateway User authentication and consent Token request API request Token introspection
  • 20. 20 • Pros – Familiar with API operations • Cons – API gateway vendors usually don’t consider OAuth functionality with high priority; sometimesobsolete – Authorization decision needs to be implemented on the vendor’s proprietary extension framework AS Integrated with API Gateways Client Protected Resources Resource Owner Authorization Server Subsystem IAM Service Authorization Decision Subsystem API Endpoint Subsystem API Gateway User authentication and consent Token request API request
  • 21. 21 • Freedom of choice for development • Offloading cumbersome protocol operations and token management • Leveraging the most suited solutions and/or other subsystems within organizations What Developers Really Needed Client Protected Resources Resource Owner Authorization Server IAM Service Authorization DecisionService API Gateway
  • 23. 23 • Deploying a “backend” behind your authorization server • Your authorization server acting as “frontend” • No need to consider “what to do next with what methods” on OAuth/OIDC protocol processing Introducing Semi-hosted Pattern Client Protected Resources Resource Owner Authorization Server Frontend IAM Service Authorization DecisionService API Gateway Authorization Server Backend User authentication and consent Token request API request Token introspection
  • 24. Solution Example: Authlete Semi-Hosted Authorization Server Solution 24 Authlete Customer’s EnvironmentAPI Clients Existing Services © 2018 Authlete, Inc. Websites Mobile Networked Devices Authorization Server Authorization Decision User Authentication Consent Management Entitlement Management API Servers / Gateways /data /f unction /transaction Authlete Authorization BackendAPIs Authorization Information (e.g. Tokens) Database Authorization Request API Access Authorization Status Check OAuth/OIDC Processing Request Authorization Frontend Leveraging existing services Authorization decision logic with no dependency on Authlete Separation of operation between authorization server and API servers Externalizing cumbersome OAuth/OIDC processing and token management /… OSS components available via GitHub
  • 25. Sequence is Simple - Implementation is Not 25 Resource Owner User Agent Client Authorization Server Resource Server Processing Authorization Request Issuing Authorization Code Processing Token Request Access Token Introspection ((Start)) Authorization request Authorization response Token request Token response API request API response (End) User authentication and consent
  • 26. Offloading These Tasks to Authlete Resource Owner User Agent Client Authorization Server Resource Server Authlete API Processing Authorization Request Issuing Authorization Code Processing Token Request Access Token Intro- spection /auth/authorizationPOST /auth/authorization/issuePOST /auth/tokenPOST /auth/introspectionPOST (Start) Authorization request Authorization response Token request Token response API request API response (End) User authentication and consent 26
  • 27. 1. Processing Authorization Request Resource Owner User Agent Client Authorization Server Resource Server Authlete Authlete { "parameters": "response_type=code&client_id=57297408867&red irect_uri=https%3A%2F%2Fapi.authlete.com%2Fap i%2Fmock%2Fredirection%2F10167240235" }' Send query parameters “as is” to Authlete /auth/authorizationPOST Authlete { "action": "INTERACTION", "client": { (OAuth Client information) }, "service": { (Authlete Service information) }, "ticket": "c4iy3TWGn74UMO7ihRl0ZS8OEUzV9axBlBbJbqxH-9Q" […] } Return a ticket and information for authentication and consent ((Start)) Authorization request Authorization response Token request Token response API request API response (End) User authentication and consent Processing Authorization Request 27
  • 28. 2. Issuing Authorization Code Resource Owner User Agent Client Authorization Server Resource Server Authlete Authlete { "ticket": "FFgB9gwb_WXh6g1u-UQ8ZI-d_k4B-o- cm7RkVzI8Vnc", "subject": "78yM7DpDNgUTF7h4” } Send the ticket and frontend- generated user identifier /auth/authorization/issuePOST Authlete { "action": "LOCATION", "responseContent": "https://api.authlete.com/api/mock/redirectio n/10167240235?code=_VSzpgug3OpdUymcbLYJjH1v9t E4hSPaxX_pSkxUUyk" […] } Return response contentto be sent back to the client ((Start)) Authorization request Authorization response Token request Token response API request API response (End) User authentication and consent Issuing Authorization Code and Tokens 28
  • 29. 3. Processing Token Request Resource Owner User Agent Client Authorization Server Resource Server Authlete Authlete { "parameters": "grant_type=authorization_code&code=DkKMvKzrR AsWErsWCChNX_gydqqgA55AW2OJlXmNTQI&redirect_u ri=https%3A%2F%2Fapi.authlete.com%2Fapi%2Fmoc k%2Fredirection%2F10167240235", "clientId": 57297408867, "clientSecret": "[…]", […] } Send query parameters “as is” to Authlete /auth/tokenPOST Authlete { "responseContent": "{¥"scope¥":null,¥"expires_in¥":86400,¥"token _type¥":¥"Bearer¥",¥"refresh_token¥":¥"sdQqY9 Tbhsq6ZsWm1rZLgW4A3yxIk6RcgmmexHZ9BXB¥",¥"acc ess_token¥":¥"rt5bUJsGfS17YCSmYGtgelMtokTLdoC mBe4VUFCk1YZ¥"}", […] } Return response contentto be sent back to the client ((Start)) Authorization request Authorization response Token request Token response API request API response (End) User authentication and consent Processing Token Request 29
  • 30. 4. Access Token Introspection Resource Owner User Agent Client Authorization Server Resource Server Authlete Authlete { "token": "VFGsNK- 5sXiqterdaR7b5QbRX9VTwVCQB87jbr2_xAI" } Send a token for introspection /auth/introspectionPOST Authlete { "type": "introspectionResponse", "resultCode": "A056001", "resultMessage": "[A056001] The access token is valid.", "action": "OK", "clientId": 57297408867, "clientIdAliasUsed": false, "existent": true, "expiresAt": 1511252965000, "refreshable": true, "responseContent": "Bearer error=¥"invalid_request¥"", "subject": "78yM7DpDNgUTF7h4", "sufficient": true, "usable": true } Return details associated with the token ((Start)) Authorization request Authorization response Token request Token response API request API response (End) User authentication and consent Access Token Intro- spection 30
  • 31. • They have been using Authlete instead of Azure API Management’s built-in OAuth 2.0 – It didn’t meet their requirement for open banking APIs • They haven’t deployed any IAM for the API infrastructure – Their existing internet banking system does user authentication and consent as well as entitlement management Semi-Hosted Pattern in Action: Seven Bank Sources for the diagrams: https://www.isi d.co.j p/case/case/2018sevenbank.html, https://www.isid.co.j p/news/release/2018/0919.html Client (Bank App and Third-Party Providers) Other Apps Bank Customers Authorization Server Frontend Internet Banking System Authorization Decision Service API Management Authlete Microsoft Azure User authentication and consent API request Token request 31
  • 33. 33 • Examine which pattern is the best for your context – Application runtime if API authorization doesn’tmatter – IAM system if you want to make AS tightly coupled with user authentication service – API gatewaysif you want build everything on those infrastructure • If none of options above works for you, do consider semi-hosted pattern – Take back the right to implementyour own authorization servers Build a Future-Proof Authorization Server Authorization Server FRONTEND Authlete API BACKEND Semi-hostedArchitecture - Token management - OAuth/OIDC protocol processing - UI/UX - Authorization decision logic - Identity & access management
  • 34. 34 • Justin Richer (@justin__richer)’s blog entry on semi-hosted service – https://link.medium.com/SPXhiVMfz0 • Taka Kawasaki (@darutk)’s blog entry on its implementation – https://link.medium.com/ROV8nUTfz0 • Authlete – https://www.authlete.com/ Resources