SlideShare uma empresa Scribd logo
1 de 72
Baixar para ler offline
OAuth 2.0 for Web and Mobile Application
Developers
Prabath Siriwardena
prabath@wso2.com | prabath@apache.org
Feb 2017
● The Director of Security Architecture, WSO2
● Authored the book Advanced API Security - and three more
About Me
● OAuth 2.0 provides a way of delegating access to a third party to
access a resource on behalf of the delegator.
● Access delegation via credential sharing (pre-OAuth Era)
● Access delegation via no credential sharing (non-standardized)
● Access delegation via no credential sharing (standardized)
OAuth 2.0 & Access Delegation
Pre-OAuth Era
Pre-OAuth Era
Pre-OAuth Era
Pre-OAuth Era
Pre-OAuth Era
● Google ClientLogin / AuthSub
● Flickr Auth
● Yahoo BBAuth
OAuth 1.0
OAuth WRAP
● In Nov 2009, OAuth WRAP was introduced as a draft
specification for access delegation, built on top of
OAuth 1.0.
● WRAP was later deprecated in favour of OAuth 2.0.
● WRAP is not based on a signature scheme (like OAuth
1.0)
● In 2009, Facebook add OAuth WRAP support
FriendFind.
● Introduced multiple profiles (autonomous client
profiles and user delegation profiles).
● Client Account & Password / Assertion / Username &
Password / Web App / Rich App profiles.
● The OAuth 2.0 authorization framework enables a third-party
application to obtain limited access to an HTTP service, either
on behalf of a resource owner by orchestrating an approval
interaction between the resource owner and the HTTP service,
or by allowing the third-party application to obtain access on its
own behalf.
OAuth 2.0
● OAuth 1.0 is a concrete protocol for access delegation, while
OAuth 2.0 is an authorization framework.
● OAuth 1.0 is signature based (HMAC-SHA256, RSA-SHA256) -
while OAuth 2.0 supports multiple token profiles.
● OAuth 1.0 is less extensible.
● OAuth 1.0 is less developer friendly.
● OAuth 1.0 requires TLS only for the initial handshake - but
OAuth 2.0 requires TLS through the flow.
OAuth 1.0 vs. OAuth 2.0
OAuth 2.0
● A grant type defines how a client could obtain an authorization
grant from the authorization server on behalf of the resource
owner.
● A grant type is a powerful extension point in OAuth 2.0.
Grant Types
Authorization Code Grant Type
Implicit Grant Type (I)
Implicit Grant Type (II)
Client Credentials Grant Type
Password Grant Type
● Defines the scope of the access token - what can be done with the
access token.
● The authorization and token endpoints allow the client to specify
the scope of the access request using the "scope" request
parameter.
● In turn, the authorization server uses the "scope" response
parameter to inform the client of the scope of the access token
issued.
● The value of the scope parameter is expressed as a list of space-
delimited, case-sensitive strings.
Scope
● Neither OAuth 1.0 nor WRAP supported custom token types.
● OAuth 2.0 does not mandate any token type.
● OAuth 2.0 Bearer Token / OAuth 2.0 MAC Token
● Almost all the OAuth 2.0 deployments are based on Bearer
token profile.
Token Types
● OAuth 2.0 identifies two types of clients: confidential clients and
public clients.
● A confidential client is capable of protecting its own credentials
while not a public client.
● Web app is a confidential client, while a native mobile app and
an SPA are public clients.
Client Types
OpenID Connect (OIDC)
● An identity layer on top of the OAuth 2.0.
● Enables clients to verify the identity of the end-user based on
the authentication performed by an Authorization Server.
● Use to obtain basic profile information about the End-User in an
interoperable and REST-like manner.
OpenID Connect (OIDC)
JWT (JSON Web Token)
● Defines a container to transport data between interested
parties.
● There are multiple applications of JWT - in OpenID Connect the
id_token is represented as a JWT.
● Propagate one’s identity between interested parties.
● Propagate user entitlements between interested parties.
● Transfer data securely between interested parties over a
unsecured channel.
● Assert one’s identity, given that the recipient of the JWT trusts
the asserting party.
JWT (JSON Web Token)
eyJhbGciOiJSUzI1NiIsImtpZCI6Ijc4YjRjZjIzNjU2ZGMzOTUzNjRmMWI2YzAyOTA3NjkxZjJjZGZmZ
TEifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwic3ViIjoiMTEwNTAyMjUxMTU4OTIwMTQ3Nz
MyIiwiYXpwIjoiODI1MjQ5ODM1NjU5LXRlOHFnbDcwMWtnb25ub21ucDRzcXY3ZXJodTEyMTFzLmFw
cHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiZW1haWwiOiJwcmFiYXRoQHdzbzIuY29tIiwiYXRfaGFzaC
I6InpmODZ2TnVsc0xCOGdGYXFSd2R6WWciLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXVkIjoiODI1MjQ
5ODM1NjU5LXRlOHFnbDcwMWtnb25ub21ucDRzcXY3ZXJodTEyMTFzLmFwcHMuZ29vZ2xldXNlcmN
vbnRlbnQuY29tIiwiaGQiOiJ3c28yLmNvbSIsImlhdCI6MTQwMTkwODI3MSwiZXhwIjoxNDAxOTEyMTc
xfQ.TVKv-pdyvk2gW8sGsCbsnkqsrS0T-H00xnY6ETkIfgIxfotvFn5IwKm3xyBMpy0FFe0Rb5Ht8A
EJV6PdWyxz8rMgX2HROWqSo_RfEfUpBb4iOsq4W28KftW5H0IA44VmNZ6zU4YTqPSt4TPhyFC
9fP2D_Hg7JQozpQRUfbWTJI
JWT (JSON Web Token)
● A JWT does not exist itself — either it has to be a JWS or a JWE (JSON Web
Encryption).
● It’s like an abstract class — the JWS and JWE are the concrete
implementations.
● We call a JWS or JWE, a JWT only if it follows the compact serialization.
JWT (JSON Web Token)
SAML Grant Type for OAuth 2.0
JWT Grant Type for OAuth 2.0
Self-Contained Access Tokens
Self-Issued Access Tokens
OAuth 2.0 Token Exchange
API Gateway Pattern
Fine-grained Access Control for APIs
Single Page Applications
● Single-Page Applications (SPAs) are Web apps that load a single HTML
page and dynamically update that page as the user interacts with the
app.
● An SPA is an application delivered to the browser that doesn’t reload
the page during use.
● SPAs use AJAX and HTML5 to create fluid and responsive Web apps,
without constant page reloads.
● The “page” in SPA is the single web page that the server sends to the
browser when the application starts. It’s the server rendered HTML
that gets everything started. No more, no less. After that initial page
load, all of the presentation logic is on the client.
● Much of the work happens on the client side, in JavaScript.
● User Agent-based Application
Single Page Applications
TRADITIONAL PAGE LIFECYCLE
Single Page Applications
SPA LIFECYCLE
Securing SPAs (I)
Password Grant Type
● Two fundamental issues you find in any ‘pure’ SPA application.
○ An SPA accessing an OAuth secured API is - the client cannot be
authenticated in a completely legitimate manner.
○ An SPA accessing an OAuth secured API is - the access token
cannot be made invisible to the end-user.
● No single sign on experience.
● Users have to provide their credentials directly to the SPA - rather
than to the identity provider. Must trust the SPA.
● No UI redirections.
Securing SPAs (I)
Password Grant Type
Securing SPAs (II)
Implicit Grant Type
Securing SPAs (II)
Implicit Grant Type
● Two fundamental issues you find in any ‘pure’ SPA application.
○ An SPA accessing an OAuth secured API is - the client cannot be
authenticated in a completely legitimate manner.
○ An SPA accessing an OAuth secured API is - the access token
cannot be made invisible to the end-user.
● Single Sign On experience.
● Users do not need to provide credentials to the SPA, rather to the
identity provider.
● UI redirections.
Securing SPAs (II)
Implicit Grant Type
● An SPA accessing an OAuth secured API and the client cannot be
authenticated in a completely legitimate manner.
○ Impact
■ Invoke APIs protected with client_credentials grant type.
■ Impersonate a legitimate client application and fool the user
to get his consent to access user resources on behalf of the
legitimate user.
○ Recommendations
■ Reject any tokens used to access APIs, which are issued under
client_credentials grant type.
■ The authorization should do proper validations on the
redirect_url.
Overcoming Security Challenges
● An SPA accessing an OAuth secured API and the access token
cannot be made invisible to the end-user.
○ Impact
■ Can eat-out throttling limits associated with an API per
application.
■ Access token returned backed from the implicit grant type is
in browser history. Can be used by illegitimate users.
○ Recommendations
■ Enforce per user per application throttling limits.
■ Make the access tokens short-lived.
■ One time access token - discard the access token in its first
use (access token chaining).
Overcoming Security Challenges
Securing SPAs (III)
OAuth Proxy
● Two fundamental issues you find in any ‘pure’ SPA application.
○ An SPA accessing an OAuth secured API is - the client cannot be
authenticated in a completely legitimate manner.
○ An SPA accessing an OAuth secured API is - the access token
cannot be made invisible to the end-user.
● Single Sign On experience.
● Users do not need to provide credentials to the SPA, rather to the
identity provider.
● UI redirections.
● Not pure SPA - all the API calls from the SPA should go through the
SPA.
Securing SPAs (III)
OAuth Proxy
● Create a JWE with the access token, user info - encrypt and set it in
a session cookie, in the response to the login
● All the API calls from the SPA to the proxy, this cookie will be
included.
Securing SPAs (IV)
Stateless OAuth Proxy
var xmlHttp = new XMLHttpRequest();
xmlHttp.withCredentials = true;
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
var obj = JSON.parse(xmlHttp.responseText);
document.getElementById('name-id').innerHTML = obj.sub;
}
};
xmlHttp.open("GET",
"https://localhost:9443/oauth2-proxy/users?code="
+ sessionStorage.getItem("guid"), true);
xmlHttp.send();
Securing SPAs (IV)
Stateless OAuth Proxy
● Use the web view
● Session not shared among multiple native apps.
● Possible phishing attacks
OAuth 2.0 for Native Apps
● Use password grant type
● Session not shared among multiple native apps.
● Possible phishing attacks
OAuth 2.0 for Native Apps
● Use the system browser
● Session shared among multiple native mobile apps
OAuth 2.0 for Native Apps
● Use the system browser
● Session shared among multiple native mobile apps
OAuth 2.0 for Native Apps
● Use an IdP proxy
● Session shared among multiple native apps
● NAPPS working group under OpenID foundation
● No more.
OAuth 2.0 for Native Apps
● Use an IdP proxy
● Session shared among multiple native apps
● NAPPS working group under OpenID foundation
● No more.
OAuth 2.0 for Native Apps
● Apple (iOS9+ - SFSafariViewController) and Google (Chrome 45+ -
Chrome Custom Tabs)
● This web controller provides all the benefits of the native system
browser in a control that can be placed within an application.
● Session shared between apps.
OAuth 2.0 for Native Apps
● The best practices draft under OAuth IETF working group ‘OAuth
2.0 for Native Apps’ recommends that OAuth 2.0 authorization
requests from native apps should only be made through external
user-agents, primarily the user's browser.
OAuth 2.0 for Native Apps
● Authorization Code Grant are susceptible to the authorization code
interception attack.
● The PKCE introduces a technique to mitigate against the threat.
● In this attack, the attacker intercepts the authorization code
returned from the authorization endpoint within a communication
path not protected by TLS.
● The attacker has access to the "client_id" and "client_secret" (if
provisioned).
● Uses a cryptographically random string that is used to correlate the
authorization request to the token request.
PKCE (Proof Key for Code Exchange)
● Defines mechanisms for dynamically registering OAuth 2.0 clients
with authorization servers.
● The resulting registration responses return a client identifier to use
at the authorization server and the client metadata values
registered for the client.
● The client can then use this registration information to
communicate with the authorization server using the OAuth 2.0
protocol.
Dynamic Client Registration Profile
● Defines a method for a protected resource to query an OAuth 2.0
authorization server to determine the active state of an OAuth 2.0
token and to determine meta-information about this token.
POST /introspect HTTP/1.1
Host: server.example.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
token=mF_9.B5f-4.1JqM&token_type_hint=access_token
HTTP/1.1 200 OK
Content-Type: application/json
{
"active": true,
"client_id": "l238j323ds-23ij4",
"username": "jdoe",
"scope": "read write dolphin",
"sub": "Z5O3upPC88QrAjx00dis",
"aud": "https://protected.example.net/resource",
"iss": "https://server.example.com/",
"exp": 1419356238,
"iat": 1419350238,
"extension_field": "twenty-seven"
}
Token Introspection Profile
● Allows clients to notify the authorization server that a previously
obtained refresh or access token is no longer needed
Token Revocation Profile
POST /revoke HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
token=45ghiukldjahdnhzdauz&token_type_hint=refresh_token
● Defines a resource set registration mechanism between an OAuth
2.0 authorization server and resource server.
● A resource set is one or more resources that the resource server
manages as a set, abstractly.
● A resource set may be a single API endpoint, a set of API endpoints,
a classic web resource such as an HTML page.
● A set of scopes can be associated with a resource set during the
registration.
Resource Set Registration Profile
● Defines how resource owners can control protected-resource
access by clients operated by arbitrary requesting parties, where
the resources reside on any number of resource servers, and where
a centralized authorization server governs access based on
resource owner policies.
● User-Managed Access (UMA) is a profile of OAuth 2.0.
User Managed Access (UMA)
● Each resource server has to register itself with the centralized
authorization server.
● This one time operation between the resource server and
authorization server.
User Managed Access (UMA)
● The resource server get a PAT (Protection API Token) from the
authorization server on behalf of the resource owner.
● PAT is an OAuth 2.0 access token with the uma_protected scope.
User Managed Access (UMA)
● The resource server registers with the authorization server.
● The communication between the authorization server and the
resource server is defined by the OAuth 2.0 Resource Set
Registration profile.
User Managed Access (UMA)
● Client accesses a protected resource with no token.
● The resource server requests one or more permission on the
client’s behalf from the authorization server, corresponding to the
access attempt by the client (with PAT).
● Authorization server responds back with a permission ticket.
● Resource Server responds with 401
User Managed Access (UMA)
● Client requests a RPT (Requesting Party Token) from the
Authorization Server.
● Uses UMA grant type
● Passes the permission ticket obtained from the resource server.
● This can be a direct call or redirect.
● If it’s a direct call client push user claims to the authorization - and
if it’s a redirect, the authorization server can learn about the
requesting party.
User Managed Access (UMA)
● Client accesses the resource with the RPT
● The Resource Server uses the introspection endpoint of the
Authorization Server to find the status of the RPT
User Managed Access (UMA)
● Use TLS in all the flows (bearer tokens)
● Store access tokens/refresh tokens/client credentials in a secure
storage (at the client side)
● Store hashed access tokens/refresh tokens/client credentials in a
secure storage (at the server side)
● Make sure access tokens/refresh tokens have the proper length to
tolerate brute-force attacks.
○ The token value should be >=128 bits long and constructed from
a cryptographically strong random or pseudo-random number
sequence
● Use strong client credentials
○ Use short-lived assertions as the client_secret
● Use OAuth state parameter to tolerate CSRF attacks.
● Use scoped access tokens.
● Use PKCE to tolerate authorization code interception attacks
(native mobile apps)
Security Considerations
● Enable throttling by user by application
● Use TLS token binding to tolerate token exports
● Restrict clients by grant types
● Avoid using the same client_id/client_secret for each instance of a
mobile app - rather use the Dynamic Client Registration API to
generate a key pair per instance.
● Short-lived access tokens
● Long-lived refresh tokens
● The token expiration time would depend on the following
parameters.
○ risk associated with token leakage
○ duration of the underlying access grant
○ time required for an attacker to guess or produce a valid token
● One time access tokens (based on the use case)
● Client should validate the token audience
Security Considerations
Thank You!
March 2017

Mais conteúdo relacionado

Mais procurados

OpenID Connect: An Overview
OpenID Connect: An OverviewOpenID Connect: An Overview
OpenID Connect: An OverviewPat Patterson
 
WSO2 Identity Server - Product Overview
WSO2 Identity Server - Product OverviewWSO2 Identity Server - Product Overview
WSO2 Identity Server - Product OverviewWSO2
 
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
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 BuzdinJava User Group Latvia
 
Comprehensive overview FAPI 1 and FAPI 2
Comprehensive overview FAPI 1 and FAPI 2Comprehensive overview FAPI 1 and FAPI 2
Comprehensive overview FAPI 1 and FAPI 2Torsten Lodderstedt
 
Web Authentication API
Web Authentication APIWeb Authentication API
Web Authentication APIFIDO Alliance
 
An Introduction to OAuth2
An Introduction to OAuth2An Introduction to OAuth2
An Introduction to OAuth2Aaron Parecki
 
Understanding JWT Exploitation
Understanding JWT ExploitationUnderstanding JWT Exploitation
Understanding JWT ExploitationAkshaeyBhosale
 
OpenID for Verifiable Credentials
OpenID for Verifiable CredentialsOpenID for Verifiable Credentials
OpenID for Verifiable CredentialsTorsten Lodderstedt
 
Getting Started With WebAuthn
Getting Started With WebAuthnGetting Started With WebAuthn
Getting Started With WebAuthnFIDO Alliance
 
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...Torsten Lodderstedt
 
Authentication & Authorization in ASPdotNet MVC
Authentication & Authorization in ASPdotNet MVCAuthentication & Authorization in ASPdotNet MVC
Authentication & Authorization in ASPdotNet MVCMindfire Solutions
 
Rest API Security - A quick understanding of Rest API Security
Rest API Security - A quick understanding of Rest API SecurityRest API Security - A quick understanding of Rest API Security
Rest API Security - A quick understanding of Rest API SecurityMohammed Fazuluddin
 
OAuth 2.0 and OpenID Connect
OAuth 2.0 and OpenID ConnectOAuth 2.0 and OpenID Connect
OAuth 2.0 and OpenID ConnectJacob Combs
 

Mais procurados (20)

Json web token
Json web tokenJson web token
Json web token
 
Json Web Token - JWT
Json Web Token - JWTJson Web Token - JWT
Json Web Token - JWT
 
OpenID Connect: An Overview
OpenID Connect: An OverviewOpenID Connect: An Overview
OpenID Connect: An Overview
 
Understanding OpenID
Understanding OpenIDUnderstanding OpenID
Understanding OpenID
 
WSO2 Identity Server - Product Overview
WSO2 Identity Server - Product OverviewWSO2 Identity Server - Product Overview
WSO2 Identity Server - Product Overview
 
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
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
 
SSO introduction
SSO introductionSSO introduction
SSO introduction
 
Comprehensive overview FAPI 1 and FAPI 2
Comprehensive overview FAPI 1 and FAPI 2Comprehensive overview FAPI 1 and FAPI 2
Comprehensive overview FAPI 1 and FAPI 2
 
Web Authentication API
Web Authentication APIWeb Authentication API
Web Authentication API
 
OAuth 2
OAuth 2OAuth 2
OAuth 2
 
OAuth 2.0
OAuth 2.0OAuth 2.0
OAuth 2.0
 
Single sign on using SAML
Single sign on using SAML Single sign on using SAML
Single sign on using SAML
 
An Introduction to OAuth2
An Introduction to OAuth2An Introduction to OAuth2
An Introduction to OAuth2
 
Understanding JWT Exploitation
Understanding JWT ExploitationUnderstanding JWT Exploitation
Understanding JWT Exploitation
 
OpenID for Verifiable Credentials
OpenID for Verifiable CredentialsOpenID for Verifiable Credentials
OpenID for Verifiable Credentials
 
Getting Started With WebAuthn
Getting Started With WebAuthnGetting Started With WebAuthn
Getting Started With WebAuthn
 
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...
 
Authentication & Authorization in ASPdotNet MVC
Authentication & Authorization in ASPdotNet MVCAuthentication & Authorization in ASPdotNet MVC
Authentication & Authorization in ASPdotNet MVC
 
Rest API Security - A quick understanding of Rest API Security
Rest API Security - A quick understanding of Rest API SecurityRest API Security - A quick understanding of Rest API Security
Rest API Security - A quick understanding of Rest API Security
 
OAuth 2.0 and OpenID Connect
OAuth 2.0 and OpenID ConnectOAuth 2.0 and OpenID Connect
OAuth 2.0 and OpenID Connect
 

Destaque

USING BEHAVIOR TO IMPROVE SECURITY AND ENHANCE RELATIONSHIPS
USING BEHAVIOR TO IMPROVE SECURITY AND ENHANCE RELATIONSHIPSUSING BEHAVIOR TO IMPROVE SECURITY AND ENHANCE RELATIONSHIPS
USING BEHAVIOR TO IMPROVE SECURITY AND ENHANCE RELATIONSHIPSForgeRock
 
Guide for Executives in Working with Private Equity
Guide for Executives in Working with Private EquityGuide for Executives in Working with Private Equity
Guide for Executives in Working with Private EquityDavid Johnson
 
Rapid Data Modeling and Testing with FakeIt
Rapid Data Modeling and Testing with FakeItRapid Data Modeling and Testing with FakeIt
Rapid Data Modeling and Testing with FakeItAaron Benton
 
Alexa Tell Me I'm Groovy Greach 2017
Alexa Tell Me I'm Groovy Greach 2017Alexa Tell Me I'm Groovy Greach 2017
Alexa Tell Me I'm Groovy Greach 2017Ryan Vanderwerf
 
Profinder Chamber of Commerce
Profinder Chamber of CommerceProfinder Chamber of Commerce
Profinder Chamber of CommerceJeevan Balani
 
Lawsuit versus 1 and 1 Electric and Sami Khosravi
Lawsuit versus 1 and 1 Electric and Sami KhosraviLawsuit versus 1 and 1 Electric and Sami Khosravi
Lawsuit versus 1 and 1 Electric and Sami KhosraviDaryoush Niknejad
 
La mutation numérique - Audition au CESER Aquitaine
La mutation numérique - Audition au CESER Aquitaine La mutation numérique - Audition au CESER Aquitaine
La mutation numérique - Audition au CESER Aquitaine Thomas Gibertie
 
RubyPico スマホで楽しくプログラミング
RubyPico スマホで楽しくプログラミングRubyPico スマホで楽しくプログラミング
RubyPico スマホで楽しくプログラミングongaeshi
 
Converting a nuisance into Value:Financing Sutainable Water Hyacinth Manageme...
Converting a nuisance into Value:Financing Sutainable Water Hyacinth Manageme...Converting a nuisance into Value:Financing Sutainable Water Hyacinth Manageme...
Converting a nuisance into Value:Financing Sutainable Water Hyacinth Manageme...CPA Stephen Omondi Okoth
 
Search as main navigation
Search as main navigationSearch as main navigation
Search as main navigationpunkt.de GmbH
 
rashes when to worry
rashes when to worryrashes when to worry
rashes when to worryTarek Kotb
 
Distròfies de retina en nens
Distròfies de retina en nensDistròfies de retina en nens
Distròfies de retina en nensMargaret Creus
 
The IT Playbook for Seamless M&A Events
The IT Playbook for Seamless M&A EventsThe IT Playbook for Seamless M&A Events
The IT Playbook for Seamless M&A EventsAbraic, Inc.
 
Use StMMA-FD instead of EPS for lost foam casting process
Use StMMA-FD instead of EPS for lost foam casting processUse StMMA-FD instead of EPS for lost foam casting process
Use StMMA-FD instead of EPS for lost foam casting processJong Wu
 

Destaque (16)

USING BEHAVIOR TO IMPROVE SECURITY AND ENHANCE RELATIONSHIPS
USING BEHAVIOR TO IMPROVE SECURITY AND ENHANCE RELATIONSHIPSUSING BEHAVIOR TO IMPROVE SECURITY AND ENHANCE RELATIONSHIPS
USING BEHAVIOR TO IMPROVE SECURITY AND ENHANCE RELATIONSHIPS
 
Guide for Executives in Working with Private Equity
Guide for Executives in Working with Private EquityGuide for Executives in Working with Private Equity
Guide for Executives in Working with Private Equity
 
Rapid Data Modeling and Testing with FakeIt
Rapid Data Modeling and Testing with FakeItRapid Data Modeling and Testing with FakeIt
Rapid Data Modeling and Testing with FakeIt
 
Alexa Tell Me I'm Groovy Greach 2017
Alexa Tell Me I'm Groovy Greach 2017Alexa Tell Me I'm Groovy Greach 2017
Alexa Tell Me I'm Groovy Greach 2017
 
Profinder Chamber of Commerce
Profinder Chamber of CommerceProfinder Chamber of Commerce
Profinder Chamber of Commerce
 
Lawsuit versus 1 and 1 Electric and Sami Khosravi
Lawsuit versus 1 and 1 Electric and Sami KhosraviLawsuit versus 1 and 1 Electric and Sami Khosravi
Lawsuit versus 1 and 1 Electric and Sami Khosravi
 
La politica frente a los desastres naturales en asia
La politica frente a los desastres naturales en asiaLa politica frente a los desastres naturales en asia
La politica frente a los desastres naturales en asia
 
La mutation numérique - Audition au CESER Aquitaine
La mutation numérique - Audition au CESER Aquitaine La mutation numérique - Audition au CESER Aquitaine
La mutation numérique - Audition au CESER Aquitaine
 
RubyPico スマホで楽しくプログラミング
RubyPico スマホで楽しくプログラミングRubyPico スマホで楽しくプログラミング
RubyPico スマホで楽しくプログラミング
 
Converting a nuisance into Value:Financing Sutainable Water Hyacinth Manageme...
Converting a nuisance into Value:Financing Sutainable Water Hyacinth Manageme...Converting a nuisance into Value:Financing Sutainable Water Hyacinth Manageme...
Converting a nuisance into Value:Financing Sutainable Water Hyacinth Manageme...
 
Search as main navigation
Search as main navigationSearch as main navigation
Search as main navigation
 
Cc 4Q16_eng
Cc 4Q16_engCc 4Q16_eng
Cc 4Q16_eng
 
rashes when to worry
rashes when to worryrashes when to worry
rashes when to worry
 
Distròfies de retina en nens
Distròfies de retina en nensDistròfies de retina en nens
Distròfies de retina en nens
 
The IT Playbook for Seamless M&A Events
The IT Playbook for Seamless M&A EventsThe IT Playbook for Seamless M&A Events
The IT Playbook for Seamless M&A Events
 
Use StMMA-FD instead of EPS for lost foam casting process
Use StMMA-FD instead of EPS for lost foam casting processUse StMMA-FD instead of EPS for lost foam casting process
Use StMMA-FD instead of EPS for lost foam casting process
 

Semelhante a OAuth 2.0 for Web and Native (Mobile) App Developers

Securing Single-Page Applications with OAuth 2.0
Securing Single-Page Applications with OAuth 2.0Securing Single-Page Applications with OAuth 2.0
Securing Single-Page Applications with OAuth 2.0Prabath Siriwardena
 
API Security In Cloud Native Era
API Security In Cloud Native EraAPI Security In Cloud Native Era
API Security In Cloud Native EraWSO2
 
Introduction to the Globus Platform for Developers
Introduction to the Globus Platform for DevelopersIntroduction to the Globus Platform for Developers
Introduction to the Globus Platform for DevelopersGlobus
 
API Security Best Practices & Guidelines
API Security Best Practices & GuidelinesAPI Security Best Practices & Guidelines
API Security Best Practices & GuidelinesPrabath Siriwardena
 
API Security Best Practices & Guidelines
API Security Best Practices & GuidelinesAPI Security Best Practices & Guidelines
API Security Best Practices & GuidelinesPrabath Siriwardena
 
OAuth with Salesforce - Demystified
OAuth with Salesforce - DemystifiedOAuth with Salesforce - Demystified
OAuth with Salesforce - DemystifiedCalvin Noronha
 
Intro to OAuth2 and OpenID Connect
Intro to OAuth2 and OpenID ConnectIntro to OAuth2 and OpenID Connect
Intro to OAuth2 and OpenID ConnectLiamWadman
 
Accessing APIs using OAuth on the federated (WordPress) web
Accessing APIs using OAuth on the federated (WordPress) webAccessing APIs using OAuth on the federated (WordPress) web
Accessing APIs using OAuth on the federated (WordPress) webFelix Arntz
 
apidays Paris 2022 - Securing APIs in Open Banking, Takashi Norimatsu, Hitachi
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, Hitachiapidays
 
OAuth - Open API Authentication
OAuth - Open API AuthenticationOAuth - Open API Authentication
OAuth - Open API Authenticationleahculver
 
O auth2 with angular js
O auth2 with angular jsO auth2 with angular js
O auth2 with angular jsBixlabs
 
Mobile Authentication - Onboarding, best practices & anti-patterns
Mobile Authentication - Onboarding, best practices & anti-patternsMobile Authentication - Onboarding, best practices & anti-patterns
Mobile Authentication - Onboarding, best practices & anti-patternsPieter Ennes
 
INTERFACE, by apidays - The Evolution of API Security by Johann Dilantha Nal...
INTERFACE, by apidays  - The Evolution of API Security by Johann Dilantha Nal...INTERFACE, by apidays  - The Evolution of API Security by Johann Dilantha Nal...
INTERFACE, by apidays - The Evolution of API Security by Johann Dilantha Nal...apidays
 
[APIdays INTERFACE 2021] The Evolution of API Security for Client-side Applic...
[APIdays INTERFACE 2021] The Evolution of API Security for Client-side Applic...[APIdays INTERFACE 2021] The Evolution of API Security for Client-side Applic...
[APIdays INTERFACE 2021] The Evolution of API Security for Client-side Applic...WSO2
 
OAuth2 - Introduction
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - IntroductionKnoldus Inc.
 
#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2
#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2
#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2Profesia Srl, Lynx Group
 
Extended Security with WSO2 API Management Platform
Extended Security with WSO2 API Management PlatformExtended Security with WSO2 API Management Platform
Extended Security with WSO2 API Management PlatformWSO2
 
Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Stateless authentication with OAuth 2 and JWT - JavaZone 2015Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Stateless authentication with OAuth 2 and JWT - JavaZone 2015Alvaro Sanchez-Mariscal
 

Semelhante a OAuth 2.0 for Web and Native (Mobile) App Developers (20)

Securing Single-Page Applications with OAuth 2.0
Securing Single-Page Applications with OAuth 2.0Securing Single-Page Applications with OAuth 2.0
Securing Single-Page Applications with OAuth 2.0
 
API Security In Cloud Native Era
API Security In Cloud Native EraAPI Security In Cloud Native Era
API Security In Cloud Native Era
 
Introduction to the Globus Platform for Developers
Introduction to the Globus Platform for DevelopersIntroduction to the Globus Platform for Developers
Introduction to the Globus Platform for Developers
 
API Security Best Practices & Guidelines
API Security Best Practices & GuidelinesAPI Security Best Practices & Guidelines
API Security Best Practices & Guidelines
 
API Security Best Practices & Guidelines
API Security Best Practices & GuidelinesAPI Security Best Practices & Guidelines
API Security Best Practices & Guidelines
 
OAuth with Salesforce - Demystified
OAuth with Salesforce - DemystifiedOAuth with Salesforce - Demystified
OAuth with Salesforce - Demystified
 
Intro to OAuth2 and OpenID Connect
Intro to OAuth2 and OpenID ConnectIntro to OAuth2 and OpenID Connect
Intro to OAuth2 and OpenID Connect
 
Accessing APIs using OAuth on the federated (WordPress) web
Accessing APIs using OAuth on the federated (WordPress) webAccessing APIs using OAuth on the federated (WordPress) web
Accessing APIs using OAuth on the federated (WordPress) web
 
Oauth2.0
Oauth2.0Oauth2.0
Oauth2.0
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
apidays Paris 2022 - Securing APIs in Open Banking, Takashi Norimatsu, Hitachi
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
 
OAuth - Open API Authentication
OAuth - Open API AuthenticationOAuth - Open API Authentication
OAuth - Open API Authentication
 
O auth2 with angular js
O auth2 with angular jsO auth2 with angular js
O auth2 with angular js
 
Mobile Authentication - Onboarding, best practices & anti-patterns
Mobile Authentication - Onboarding, best practices & anti-patternsMobile Authentication - Onboarding, best practices & anti-patterns
Mobile Authentication - Onboarding, best practices & anti-patterns
 
INTERFACE, by apidays - The Evolution of API Security by Johann Dilantha Nal...
INTERFACE, by apidays  - The Evolution of API Security by Johann Dilantha Nal...INTERFACE, by apidays  - The Evolution of API Security by Johann Dilantha Nal...
INTERFACE, by apidays - The Evolution of API Security by Johann Dilantha Nal...
 
[APIdays INTERFACE 2021] The Evolution of API Security for Client-side Applic...
[APIdays INTERFACE 2021] The Evolution of API Security for Client-side Applic...[APIdays INTERFACE 2021] The Evolution of API Security for Client-side Applic...
[APIdays INTERFACE 2021] The Evolution of API Security for Client-side Applic...
 
OAuth2 - Introduction
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - Introduction
 
#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2
#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2
#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2
 
Extended Security with WSO2 API Management Platform
Extended Security with WSO2 API Management PlatformExtended Security with WSO2 API Management Platform
Extended Security with WSO2 API Management Platform
 
Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Stateless authentication with OAuth 2 and JWT - JavaZone 2015Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Stateless authentication with OAuth 2 and JWT - JavaZone 2015
 

Mais de Prabath Siriwardena

Microservices Security Landscape
Microservices Security LandscapeMicroservices Security Landscape
Microservices Security LandscapePrabath Siriwardena
 
Cloud Native Identity with SPIFFE
Cloud Native Identity with SPIFFECloud Native Identity with SPIFFE
Cloud Native Identity with SPIFFEPrabath Siriwardena
 
Microservices Security Landscape
Microservices Security LandscapeMicroservices Security Landscape
Microservices Security LandscapePrabath Siriwardena
 
Blockchain-based Solutions for Identity & Access Management
Blockchain-based Solutions for Identity & Access ManagementBlockchain-based Solutions for Identity & Access Management
Blockchain-based Solutions for Identity & Access ManagementPrabath Siriwardena
 
Identity Management for Web Application Developers
Identity Management for Web Application DevelopersIdentity Management for Web Application Developers
Identity Management for Web Application DevelopersPrabath Siriwardena
 
Open Standards in Identity Management
Open Standards  in  Identity ManagementOpen Standards  in  Identity Management
Open Standards in Identity ManagementPrabath Siriwardena
 
API Security : Patterns and Practices
API Security : Patterns and PracticesAPI Security : Patterns and Practices
API Security : Patterns and PracticesPrabath Siriwardena
 
Best Practices in Building an API Security Ecosystem
Best Practices in Building an API Security EcosystemBest Practices in Building an API Security Ecosystem
Best Practices in Building an API Security EcosystemPrabath Siriwardena
 
Connected Identity : The Role of the Identity Bus
Connected Identity : The Role of the Identity BusConnected Identity : The Role of the Identity Bus
Connected Identity : The Role of the Identity BusPrabath Siriwardena
 
Connected Identity : Benefits, Risks & Challenges
Connected Identity : Benefits, Risks & ChallengesConnected Identity : Benefits, Risks & Challenges
Connected Identity : Benefits, Risks & ChallengesPrabath Siriwardena
 
The Evolution of Internet Identity
The Evolution of Internet IdentityThe Evolution of Internet Identity
The Evolution of Internet IdentityPrabath Siriwardena
 
Next-Gen Apps with IoT and Cloud
Next-Gen Apps with IoT and CloudNext-Gen Apps with IoT and Cloud
Next-Gen Apps with IoT and CloudPrabath Siriwardena
 
WSO2Con USA 2014 - Identity Server Tutorial
WSO2Con USA 2014 - Identity Server TutorialWSO2Con USA 2014 - Identity Server Tutorial
WSO2Con USA 2014 - Identity Server TutorialPrabath Siriwardena
 

Mais de Prabath Siriwardena (20)

Microservices Security Landscape
Microservices Security LandscapeMicroservices Security Landscape
Microservices Security Landscape
 
Cloud Native Identity with SPIFFE
Cloud Native Identity with SPIFFECloud Native Identity with SPIFFE
Cloud Native Identity with SPIFFE
 
Identity is Eating the World!
Identity is Eating the World!Identity is Eating the World!
Identity is Eating the World!
 
Microservices Security Landscape
Microservices Security LandscapeMicroservices Security Landscape
Microservices Security Landscape
 
OAuth 2.0 Threat Landscape
OAuth 2.0 Threat LandscapeOAuth 2.0 Threat Landscape
OAuth 2.0 Threat Landscape
 
GDPR for Identity Architects
GDPR for Identity ArchitectsGDPR for Identity Architects
GDPR for Identity Architects
 
Blockchain-based Solutions for Identity & Access Management
Blockchain-based Solutions for Identity & Access ManagementBlockchain-based Solutions for Identity & Access Management
Blockchain-based Solutions for Identity & Access Management
 
OAuth 2.0 Threat Landscapes
OAuth 2.0 Threat LandscapesOAuth 2.0 Threat Landscapes
OAuth 2.0 Threat Landscapes
 
Identity Management for Web Application Developers
Identity Management for Web Application DevelopersIdentity Management for Web Application Developers
Identity Management for Web Application Developers
 
Open Standards in Identity Management
Open Standards  in  Identity ManagementOpen Standards  in  Identity Management
Open Standards in Identity Management
 
API Security : Patterns and Practices
API Security : Patterns and PracticesAPI Security : Patterns and Practices
API Security : Patterns and Practices
 
Best Practices in Building an API Security Ecosystem
Best Practices in Building an API Security EcosystemBest Practices in Building an API Security Ecosystem
Best Practices in Building an API Security Ecosystem
 
Connected Identity : The Role of the Identity Bus
Connected Identity : The Role of the Identity BusConnected Identity : The Role of the Identity Bus
Connected Identity : The Role of the Identity Bus
 
Connected Identity : Benefits, Risks & Challenges
Connected Identity : Benefits, Risks & ChallengesConnected Identity : Benefits, Risks & Challenges
Connected Identity : Benefits, Risks & Challenges
 
The Evolution of Internet Identity
The Evolution of Internet IdentityThe Evolution of Internet Identity
The Evolution of Internet Identity
 
Next-Gen Apps with IoT and Cloud
Next-Gen Apps with IoT and CloudNext-Gen Apps with IoT and Cloud
Next-Gen Apps with IoT and Cloud
 
Securing Insecure
Securing InsecureSecuring Insecure
Securing Insecure
 
Evolution of Internet Identity
Evolution of Internet IdentityEvolution of Internet Identity
Evolution of Internet Identity
 
Securing the Insecure
Securing the InsecureSecuring the Insecure
Securing the Insecure
 
WSO2Con USA 2014 - Identity Server Tutorial
WSO2Con USA 2014 - Identity Server TutorialWSO2Con USA 2014 - Identity Server Tutorial
WSO2Con USA 2014 - Identity Server Tutorial
 

Último

Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxCarlos105
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatYousafMalik24
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
Activity 2-unit 2-update 2024. English translation
Activity 2-unit 2-update 2024. English translationActivity 2-unit 2-update 2024. English translation
Activity 2-unit 2-update 2024. English translationRosabel UA
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfTechSoup
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptxmary850239
 
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptxMusic 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptxleah joy valeriano
 
Integumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptIntegumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptshraddhaparab530
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptxmary850239
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptxmary850239
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management SystemChristalin Nelson
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptxiammrhaywood
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Celine George
 

Último (20)

Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice great
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 
Activity 2-unit 2-update 2024. English translation
Activity 2-unit 2-update 2024. English translationActivity 2-unit 2-update 2024. English translation
Activity 2-unit 2-update 2024. English translation
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx
 
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptxMusic 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
 
Integumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptIntegumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.ppt
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management System
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17
 

OAuth 2.0 for Web and Native (Mobile) App Developers

  • 1. OAuth 2.0 for Web and Mobile Application Developers Prabath Siriwardena prabath@wso2.com | prabath@apache.org Feb 2017
  • 2. ● The Director of Security Architecture, WSO2 ● Authored the book Advanced API Security - and three more About Me
  • 3. ● OAuth 2.0 provides a way of delegating access to a third party to access a resource on behalf of the delegator. ● Access delegation via credential sharing (pre-OAuth Era) ● Access delegation via no credential sharing (non-standardized) ● Access delegation via no credential sharing (standardized) OAuth 2.0 & Access Delegation
  • 8. Pre-OAuth Era ● Google ClientLogin / AuthSub ● Flickr Auth ● Yahoo BBAuth
  • 10. OAuth WRAP ● In Nov 2009, OAuth WRAP was introduced as a draft specification for access delegation, built on top of OAuth 1.0. ● WRAP was later deprecated in favour of OAuth 2.0. ● WRAP is not based on a signature scheme (like OAuth 1.0) ● In 2009, Facebook add OAuth WRAP support FriendFind. ● Introduced multiple profiles (autonomous client profiles and user delegation profiles). ● Client Account & Password / Assertion / Username & Password / Web App / Rich App profiles.
  • 11. ● The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. OAuth 2.0
  • 12. ● OAuth 1.0 is a concrete protocol for access delegation, while OAuth 2.0 is an authorization framework. ● OAuth 1.0 is signature based (HMAC-SHA256, RSA-SHA256) - while OAuth 2.0 supports multiple token profiles. ● OAuth 1.0 is less extensible. ● OAuth 1.0 is less developer friendly. ● OAuth 1.0 requires TLS only for the initial handshake - but OAuth 2.0 requires TLS through the flow. OAuth 1.0 vs. OAuth 2.0
  • 14. ● A grant type defines how a client could obtain an authorization grant from the authorization server on behalf of the resource owner. ● A grant type is a powerful extension point in OAuth 2.0. Grant Types
  • 20. ● Defines the scope of the access token - what can be done with the access token. ● The authorization and token endpoints allow the client to specify the scope of the access request using the "scope" request parameter. ● In turn, the authorization server uses the "scope" response parameter to inform the client of the scope of the access token issued. ● The value of the scope parameter is expressed as a list of space- delimited, case-sensitive strings. Scope
  • 21. ● Neither OAuth 1.0 nor WRAP supported custom token types. ● OAuth 2.0 does not mandate any token type. ● OAuth 2.0 Bearer Token / OAuth 2.0 MAC Token ● Almost all the OAuth 2.0 deployments are based on Bearer token profile. Token Types
  • 22. ● OAuth 2.0 identifies two types of clients: confidential clients and public clients. ● A confidential client is capable of protecting its own credentials while not a public client. ● Web app is a confidential client, while a native mobile app and an SPA are public clients. Client Types
  • 23. OpenID Connect (OIDC) ● An identity layer on top of the OAuth 2.0. ● Enables clients to verify the identity of the end-user based on the authentication performed by an Authorization Server. ● Use to obtain basic profile information about the End-User in an interoperable and REST-like manner.
  • 25. JWT (JSON Web Token) ● Defines a container to transport data between interested parties. ● There are multiple applications of JWT - in OpenID Connect the id_token is represented as a JWT. ● Propagate one’s identity between interested parties. ● Propagate user entitlements between interested parties. ● Transfer data securely between interested parties over a unsecured channel. ● Assert one’s identity, given that the recipient of the JWT trusts the asserting party.
  • 26. JWT (JSON Web Token) eyJhbGciOiJSUzI1NiIsImtpZCI6Ijc4YjRjZjIzNjU2ZGMzOTUzNjRmMWI2YzAyOTA3NjkxZjJjZGZmZ TEifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwic3ViIjoiMTEwNTAyMjUxMTU4OTIwMTQ3Nz MyIiwiYXpwIjoiODI1MjQ5ODM1NjU5LXRlOHFnbDcwMWtnb25ub21ucDRzcXY3ZXJodTEyMTFzLmFw cHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiZW1haWwiOiJwcmFiYXRoQHdzbzIuY29tIiwiYXRfaGFzaC I6InpmODZ2TnVsc0xCOGdGYXFSd2R6WWciLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXVkIjoiODI1MjQ 5ODM1NjU5LXRlOHFnbDcwMWtnb25ub21ucDRzcXY3ZXJodTEyMTFzLmFwcHMuZ29vZ2xldXNlcmN vbnRlbnQuY29tIiwiaGQiOiJ3c28yLmNvbSIsImlhdCI6MTQwMTkwODI3MSwiZXhwIjoxNDAxOTEyMTc xfQ.TVKv-pdyvk2gW8sGsCbsnkqsrS0T-H00xnY6ETkIfgIxfotvFn5IwKm3xyBMpy0FFe0Rb5Ht8A EJV6PdWyxz8rMgX2HROWqSo_RfEfUpBb4iOsq4W28KftW5H0IA44VmNZ6zU4YTqPSt4TPhyFC 9fP2D_Hg7JQozpQRUfbWTJI
  • 27. JWT (JSON Web Token) ● A JWT does not exist itself — either it has to be a JWS or a JWE (JSON Web Encryption). ● It’s like an abstract class — the JWS and JWE are the concrete implementations. ● We call a JWS or JWE, a JWT only if it follows the compact serialization.
  • 28. JWT (JSON Web Token)
  • 29. SAML Grant Type for OAuth 2.0
  • 30. JWT Grant Type for OAuth 2.0
  • 33. OAuth 2.0 Token Exchange
  • 36. Single Page Applications ● Single-Page Applications (SPAs) are Web apps that load a single HTML page and dynamically update that page as the user interacts with the app. ● An SPA is an application delivered to the browser that doesn’t reload the page during use. ● SPAs use AJAX and HTML5 to create fluid and responsive Web apps, without constant page reloads. ● The “page” in SPA is the single web page that the server sends to the browser when the application starts. It’s the server rendered HTML that gets everything started. No more, no less. After that initial page load, all of the presentation logic is on the client. ● Much of the work happens on the client side, in JavaScript. ● User Agent-based Application
  • 40. ● Two fundamental issues you find in any ‘pure’ SPA application. ○ An SPA accessing an OAuth secured API is - the client cannot be authenticated in a completely legitimate manner. ○ An SPA accessing an OAuth secured API is - the access token cannot be made invisible to the end-user. ● No single sign on experience. ● Users have to provide their credentials directly to the SPA - rather than to the identity provider. Must trust the SPA. ● No UI redirections. Securing SPAs (I) Password Grant Type
  • 43. ● Two fundamental issues you find in any ‘pure’ SPA application. ○ An SPA accessing an OAuth secured API is - the client cannot be authenticated in a completely legitimate manner. ○ An SPA accessing an OAuth secured API is - the access token cannot be made invisible to the end-user. ● Single Sign On experience. ● Users do not need to provide credentials to the SPA, rather to the identity provider. ● UI redirections. Securing SPAs (II) Implicit Grant Type
  • 44. ● An SPA accessing an OAuth secured API and the client cannot be authenticated in a completely legitimate manner. ○ Impact ■ Invoke APIs protected with client_credentials grant type. ■ Impersonate a legitimate client application and fool the user to get his consent to access user resources on behalf of the legitimate user. ○ Recommendations ■ Reject any tokens used to access APIs, which are issued under client_credentials grant type. ■ The authorization should do proper validations on the redirect_url. Overcoming Security Challenges
  • 45. ● An SPA accessing an OAuth secured API and the access token cannot be made invisible to the end-user. ○ Impact ■ Can eat-out throttling limits associated with an API per application. ■ Access token returned backed from the implicit grant type is in browser history. Can be used by illegitimate users. ○ Recommendations ■ Enforce per user per application throttling limits. ■ Make the access tokens short-lived. ■ One time access token - discard the access token in its first use (access token chaining). Overcoming Security Challenges
  • 47. ● Two fundamental issues you find in any ‘pure’ SPA application. ○ An SPA accessing an OAuth secured API is - the client cannot be authenticated in a completely legitimate manner. ○ An SPA accessing an OAuth secured API is - the access token cannot be made invisible to the end-user. ● Single Sign On experience. ● Users do not need to provide credentials to the SPA, rather to the identity provider. ● UI redirections. ● Not pure SPA - all the API calls from the SPA should go through the SPA. Securing SPAs (III) OAuth Proxy
  • 48. ● Create a JWE with the access token, user info - encrypt and set it in a session cookie, in the response to the login ● All the API calls from the SPA to the proxy, this cookie will be included. Securing SPAs (IV) Stateless OAuth Proxy var xmlHttp = new XMLHttpRequest(); xmlHttp.withCredentials = true; xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { var obj = JSON.parse(xmlHttp.responseText); document.getElementById('name-id').innerHTML = obj.sub; } }; xmlHttp.open("GET", "https://localhost:9443/oauth2-proxy/users?code=" + sessionStorage.getItem("guid"), true); xmlHttp.send();
  • 50. ● Use the web view ● Session not shared among multiple native apps. ● Possible phishing attacks OAuth 2.0 for Native Apps
  • 51. ● Use password grant type ● Session not shared among multiple native apps. ● Possible phishing attacks OAuth 2.0 for Native Apps
  • 52. ● Use the system browser ● Session shared among multiple native mobile apps OAuth 2.0 for Native Apps
  • 53. ● Use the system browser ● Session shared among multiple native mobile apps OAuth 2.0 for Native Apps
  • 54. ● Use an IdP proxy ● Session shared among multiple native apps ● NAPPS working group under OpenID foundation ● No more. OAuth 2.0 for Native Apps
  • 55. ● Use an IdP proxy ● Session shared among multiple native apps ● NAPPS working group under OpenID foundation ● No more. OAuth 2.0 for Native Apps
  • 56. ● Apple (iOS9+ - SFSafariViewController) and Google (Chrome 45+ - Chrome Custom Tabs) ● This web controller provides all the benefits of the native system browser in a control that can be placed within an application. ● Session shared between apps. OAuth 2.0 for Native Apps
  • 57. ● The best practices draft under OAuth IETF working group ‘OAuth 2.0 for Native Apps’ recommends that OAuth 2.0 authorization requests from native apps should only be made through external user-agents, primarily the user's browser. OAuth 2.0 for Native Apps
  • 58. ● Authorization Code Grant are susceptible to the authorization code interception attack. ● The PKCE introduces a technique to mitigate against the threat. ● In this attack, the attacker intercepts the authorization code returned from the authorization endpoint within a communication path not protected by TLS. ● The attacker has access to the "client_id" and "client_secret" (if provisioned). ● Uses a cryptographically random string that is used to correlate the authorization request to the token request. PKCE (Proof Key for Code Exchange)
  • 59. ● Defines mechanisms for dynamically registering OAuth 2.0 clients with authorization servers. ● The resulting registration responses return a client identifier to use at the authorization server and the client metadata values registered for the client. ● The client can then use this registration information to communicate with the authorization server using the OAuth 2.0 protocol. Dynamic Client Registration Profile
  • 60. ● Defines a method for a protected resource to query an OAuth 2.0 authorization server to determine the active state of an OAuth 2.0 token and to determine meta-information about this token. POST /introspect HTTP/1.1 Host: server.example.com Accept: application/json Content-Type: application/x-www-form-urlencoded Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW token=mF_9.B5f-4.1JqM&token_type_hint=access_token HTTP/1.1 200 OK Content-Type: application/json { "active": true, "client_id": "l238j323ds-23ij4", "username": "jdoe", "scope": "read write dolphin", "sub": "Z5O3upPC88QrAjx00dis", "aud": "https://protected.example.net/resource", "iss": "https://server.example.com/", "exp": 1419356238, "iat": 1419350238, "extension_field": "twenty-seven" } Token Introspection Profile
  • 61. ● Allows clients to notify the authorization server that a previously obtained refresh or access token is no longer needed Token Revocation Profile POST /revoke HTTP/1.1 Host: server.example.com Content-Type: application/x-www-form-urlencoded Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW token=45ghiukldjahdnhzdauz&token_type_hint=refresh_token
  • 62. ● Defines a resource set registration mechanism between an OAuth 2.0 authorization server and resource server. ● A resource set is one or more resources that the resource server manages as a set, abstractly. ● A resource set may be a single API endpoint, a set of API endpoints, a classic web resource such as an HTML page. ● A set of scopes can be associated with a resource set during the registration. Resource Set Registration Profile
  • 63. ● Defines how resource owners can control protected-resource access by clients operated by arbitrary requesting parties, where the resources reside on any number of resource servers, and where a centralized authorization server governs access based on resource owner policies. ● User-Managed Access (UMA) is a profile of OAuth 2.0. User Managed Access (UMA)
  • 64. ● Each resource server has to register itself with the centralized authorization server. ● This one time operation between the resource server and authorization server. User Managed Access (UMA)
  • 65. ● The resource server get a PAT (Protection API Token) from the authorization server on behalf of the resource owner. ● PAT is an OAuth 2.0 access token with the uma_protected scope. User Managed Access (UMA)
  • 66. ● The resource server registers with the authorization server. ● The communication between the authorization server and the resource server is defined by the OAuth 2.0 Resource Set Registration profile. User Managed Access (UMA)
  • 67. ● Client accesses a protected resource with no token. ● The resource server requests one or more permission on the client’s behalf from the authorization server, corresponding to the access attempt by the client (with PAT). ● Authorization server responds back with a permission ticket. ● Resource Server responds with 401 User Managed Access (UMA)
  • 68. ● Client requests a RPT (Requesting Party Token) from the Authorization Server. ● Uses UMA grant type ● Passes the permission ticket obtained from the resource server. ● This can be a direct call or redirect. ● If it’s a direct call client push user claims to the authorization - and if it’s a redirect, the authorization server can learn about the requesting party. User Managed Access (UMA)
  • 69. ● Client accesses the resource with the RPT ● The Resource Server uses the introspection endpoint of the Authorization Server to find the status of the RPT User Managed Access (UMA)
  • 70. ● Use TLS in all the flows (bearer tokens) ● Store access tokens/refresh tokens/client credentials in a secure storage (at the client side) ● Store hashed access tokens/refresh tokens/client credentials in a secure storage (at the server side) ● Make sure access tokens/refresh tokens have the proper length to tolerate brute-force attacks. ○ The token value should be >=128 bits long and constructed from a cryptographically strong random or pseudo-random number sequence ● Use strong client credentials ○ Use short-lived assertions as the client_secret ● Use OAuth state parameter to tolerate CSRF attacks. ● Use scoped access tokens. ● Use PKCE to tolerate authorization code interception attacks (native mobile apps) Security Considerations
  • 71. ● Enable throttling by user by application ● Use TLS token binding to tolerate token exports ● Restrict clients by grant types ● Avoid using the same client_id/client_secret for each instance of a mobile app - rather use the Dynamic Client Registration API to generate a key pair per instance. ● Short-lived access tokens ● Long-lived refresh tokens ● The token expiration time would depend on the following parameters. ○ risk associated with token leakage ○ duration of the underlying access grant ○ time required for an attacker to guess or produce a valid token ● One time access tokens (based on the use case) ● Client should validate the token audience Security Considerations