SlideShare a Scribd company logo
DevNexus
#RESTSecurity @dblevins @tomitribe
Deconstructing REST Security
David Blevins
Tomitribe
DevNexus
#RESTSecurity @dblevins @tomitribe
“The nice thing about standards is
you have so many to choose from.”
- Andrew S. Tanenbaum
DevNexus
#RESTSecurity @dblevins @tomitribe
Focus Areas
• Beyond Basic Auth
• Theory of OAuth 2.0
• Introduction of JWT
• Google/Facebook style API security
• Stateless vs Stateful Architecture
• HTTP Signatures
• Amazon EC2 style API security
DevNexus
#RESTSecurity @dblevins @tomitribe
Baseline Architecture
1000 users
x 3 TPS
4 hops
3000 TPS
frontend
12000 TPS
backend
DevNexus
#RESTSecurity @dblevins @tomitribe
Basic Auth
(and its problems)
DevNexus
#RESTSecurity @dblevins @tomitribe
Basic Auth Message
POST /painter/color/object HTTP/1.1
Host: localhost:8443
Authorization: Basic c25vb3B5OnBhc3M=
User-Agent: curl/7.43.0
Accept: */*
Content-Type: application/json
Content-Length: 45
{"color":{"b":255,"g":0,"name":"blue","r":0}}
DevNexus
#RESTSecurity @dblevins @tomitribe
Basic Auth
Password Sent
3000 TPS
(HTTP+SSL)
username+password
Base64
(no auth)
3000 TPS
(LDAP)
12000 TPS
(HTTP)
DevNexus
#RESTSecurity @dblevins @tomitribe
Basic Auth
Password Sent
3000 TPS
(HTTP+SSL)
username+password
Base64
username+password
Base64
15000 TPS
(LDAP)
Password Sent
12000 TPS
(HTTP)
DevNexus
#RESTSecurity @dblevins @tomitribe
Basic Auth
Password Sent
3000 TPS
(HTTP+SSL)
username+password
Base64
IP
whitelisting
3000 TPS
(LDAP)
12000 TPS
(HTTP)
DevNexus
#RESTSecurity @dblevins @tomitribe
“Hey, give me all
of Joe’s salary
information.”
“I don’t know
who you are,
…
but sure!”
DevNexus
#RESTSecurity @dblevins @tomitribe
Latveria Attacks
DevNexus
#RESTSecurity @dblevins @tomitribe
Basic Auth - Attacks
Valid
Password Sent
3000 TPS
(HTTP+SSL) IP
whitelisting
9000 TPS
(LDAP)
12000 TPS
(HTTP)
Invalid
Password Sent
6000 TPS
(HTTP+SSL)
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2.0
(and its problems)
DevNexus
#RESTSecurity @dblevins @tomitribe
DevNexus
#RESTSecurity @dblevins @tomitribe
DevNexus
#RESTSecurity @dblevins @tomitribe
DevNexus
#RESTSecurity @dblevins @tomitribe
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2 - Password Grant
(LDAP)
(Token Store)
POST /oauth2/token
Host: api.superbiz.io
User-Agent: curl/7.43.0
Accept: */*
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
grant_type=password&username=snoopy&password=woodstock
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"expires_in":3600,
"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
}
Verify
Password
Generate
Token
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2.0 Message
POST /painter/color/object HTTP/1.1

Host: api.superbiz.io

Authoriza>on: Bearer 2YotnFZFEjr1zCsicMWpAA

User-Agent: curl/7.43.0

Accept: */*

Content-Type: application/json

Content-Length: 45



{"color":{"b":255,"g":0,"r":0,"name":"blue"}}
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2.0 Message
POST /painter/color/palette HTTP/1.1

Host: api.superbiz.io

Authoriza>on: Bearer 2YotnFZFEjr1zCsicMWpAA

User-Agent: curl/7.43.0

Accept: */*

Content-Type: application/json

Content-Length: 46



{"color":{"b":0,"g":255,"r":0,"name":"green"}}
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2.0 Message
POST /painter/color/select HTTP/1.1

Host: api.superbiz.io

Authoriza>on: Bearer 2YotnFZFEjr1zCsicMWpAA

User-Agent: curl/7.43.0

Accept: */*

Content-Type: application/json

Content-Length: 44



{"color":{"b":255,"g":0,"r":0,"name":"red"}}
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2.0 Message
POST /painter/color/fill HTTP/1.1

Host: api.superbiz.io

Authoriza>on: Bearer 2YotnFZFEjr1zCsicMWpAA

User-Agent: curl/7.43.0

Accept: */*

Content-Type: application/json

Content-Length: 49



{"color":{"b":255,"g":255,"r":0,"name":"yellow"}}
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2.0 Message
POST /painter/color/stroke HTTP/1.1

Host: api.superbiz.io

Authoriza>on: Bearer 2YotnFZFEjr1zCsicMWpAA

User-Agent: curl/7.43.0

Accept: */*

Content-Type: application/json

Content-Length: 49



{"color":{"b":255,"g":200,"r":0,"name":"orange"}}
DevNexus
#RESTSecurity @dblevins @tomitribe
401
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2 - Refresh Grant
(LDAP)
(Token Store)
Verify
Password
Generate
Token
POST /oauth2/token
Host: api.superbiz.io
User-Agent: curl/7.43.0
Accept: */*
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"6Fe4jd7TmdE5yW2q0y6W2w",
"expires_in":3600,
"refresh_token":"hyT5rw1QNh5Ttg2hdtR54e",
}
DevNexus
#RESTSecurity @dblevins @tomitribe
Old pair
• Access Token 2YotnFZFEjr1zCsicMWpAA
• Refresh Token tGzv3JOkF0XG5Qx2TlKWIA
New pair
• Access Token 6Fe4jd7TmdE5yW2q0y6W2w
• Refresh Token hyT5rw1QNh5Ttg2hdtR54e
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2.0 Message
POST /painter/color/palette HTTP/1.1

Host: api.superbiz.io

Authoriza>on: Bearer 6Fe4jd7TmdE5yW2q0y6W2w

User-Agent: curl/7.43.0

Accept: */*

Content-Type: application/json

Content-Length: 46



{"color":{"b":0,"g":255,"r":0,"name":"green"}}
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2.0 Message
POST /painter/color/select HTTP/1.1

Host: api.superbiz.io

Authoriza>on: Bearer 6Fe4jd7TmdE5yW2q0y6W2w

User-Agent: curl/7.43.0

Accept: */*

Content-Type: application/json

Content-Length: 44



{"color":{"b":255,"g":0,"r":0,"name":"red"}}
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2.0 Message
POST /painter/color/fill HTTP/1.1

Host: api.superbiz.io

Authoriza>on: Bearer 6Fe4jd7TmdE5yW2q0y6W2w

User-Agent: curl/7.43.0

Accept: */*

Content-Type: application/json

Content-Length: 49



{"color":{"b":255,"g":255,"r":0,"name":"yellow"}}
DevNexus
#RESTSecurity @dblevins @tomitribe
What have we achieved?
DevNexus
#RESTSecurity @dblevins @tomitribe
You have more passwords
(at least your devices do)
DevNexus
#RESTSecurity @dblevins @tomitribe
Term Alert
• Password Grant???
• Logging in
• Token?
• Slightly less crappy password
• Equally crappy HTTP Session ID
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2
Tokens Sent
3000 TPS
(HTTP+SSL)
IP
whitelisting
3000 TPS
(token checks)
Password Sent
1000/daily
(HTTP+SSL)
OAuth 2
(LDAP)
4 hops
12000 TPS
backend
DevNexus
#RESTSecurity @dblevins @tomitribe
DevNexus
#RESTSecurity @dblevins @tomitribe
“Who the heck
is
6Fe4jd7TmdE5y
W2q0y6W2w
???????”
“No idea, dude.
Ask the token
server.”
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2
Tokens Sent
3000 TPS
(HTTP+SSL)
IP
whitelisting
3000 TPS
(token checks)
Password Sent
1000/daily
(HTTP+SSL)
OAuth 2
(LDAP)
12000 TPS
(token checks)
8 hops
24000 TPS
backend
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2
Tokens Sent
3000 TPS
(HTTP+SSL)
IP
whitelisting
3000 TPS
(token checks)
Password Sent
1000/daily
(HTTP+SSL)
OAuth 2
(LDAP)
12000 TPS
(token checks)
8 hops
24000 TPS
backend
55% of all traffic
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2
Tokens Sent
3000 TPS
(HTTP+SSL)
IP
whitelisting
0 TPS
(token checks)
Password Sent
1000/daily
(HTTP+SSL)
OAuth 2
(LDAP)
0 TPS
(token checks)
0 hops
0 TPS
backend
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2
Pointer Pointer
State
DevNexus
#RESTSecurity @dblevins @tomitribe
Access Token
Access Pointer?
Access Primary Key?
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2.0
High Frequency Password
Exchange Algorithm?
DevNexus
#RESTSecurity @dblevins @tomitribe
Hashing and Signing
Symmetric and Asymmetric
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2.0
+
JSon Web Tokens (JWT)
DevNexus
#RESTSecurity @dblevins @tomitribe
JSon Web Token
• Pronounced “JOT”
• Fancy JSON map
• Base64 URL Encoded
• Digitally Signed (RSA-SHA256, HMAC-SHA512, etc)
• Built-in expiration
DevNexus
#RESTSecurity @dblevins @tomitribe
Access Token Previously
• 6Fe4jd7TmdE5yW2q0y6W2w
DevNexus
#RESTSecurity @dblevins @tomitribe
Access Token Now
• eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbi10eXBlIjoi
YWNjZXNzLXRva2VuIiwidXNlcm5hbWUiOiJzbm9vcHkiLCJhb
mltYWwiOiJiZWFnbGUiLCJpc3MiOiJodHRwczovL2RlbW8uc3
VwZXJiaXouY29tL29hdXRoMi90b2tlbiIsInNjb3BlcyI6WyJ0d2l
0dGVyIiwibWFucy1iZXN0LWZyaWVuZCJdLCJleHAiOjE0NzQy
ODA5NjMsImlhdCI6MTQ3NDI3OTE2MywianRpIjoiNjY4ODFi
MDY4YjI0OWFkOSJ9.DTfSdMzIIsC0j8z3icRdYO1GaMGl6j1I_2
DBjiiHW9vmDz8OAw8Jh8DpO32fv0vICc0hb4F0QCD3KQnv8
GVM73kSYaOEUwlW0k1TaElxc43_Ocxm1F5IUNZvzlLJ_ksFXG
DL_cuadhVDaiqmhct098ocefuv08TdzRxqYoEqYNo
DevNexus
#RESTSecurity @dblevins @tomitribe
Access Token Now
• header (JSON > Base64 URL Encoded)
• describes how the token signature can be checked
• payload (JSON > Base64 URL Encoded)
• Basically a map of whatever you want to put in it
• Some standard keys such as expiration
• signature (Binary > Base64 URL Encoded
• The actual digital signature
• made exclusively by the /oauth2/token endpoint
• If RSA, can be checked by anyone
DevNexus
#RESTSecurity @dblevins @tomitribe
• { "alg": “RS256", "typ": “JWT" }
• {
"token-type": "access-token",
"username": "snoopy",
"animal": "beagle",
"iss": "hdps://demo.superbiz.com/oauth2/token",
"scopes": [
“twider”, "mans-best-friend"
],
"exp": 1474280963,
"iat": 1474279163,
"j>": "66881b068b249ad9"
}
• DTfSdMzIIsC0j8z3icRdYO1GaMGl6j1I_2DBjiiHW9vmDz8OAw8Jh8DpO32fv0vICc
0hb4F0QCD3KQnv8GVM73kSYaOEUwlW0k1TaElxc43_Ocxm1F5IUNZvzlLJ_ksFX
GDL_cuadhVDaiqmhct098ocefuv08TdzRxqYoEqYNo
DevNexus
#RESTSecurity @dblevins @tomitribe
Subtle But High Impact
Architectural Change
DevNexus
#RESTSecurity @dblevins @tomitribe
What we had
(quick recap)
DevNexus
#RESTSecurity @dblevins @tomitribe
(LDAP)
Pull User Info
From IDP
DevNexus
#RESTSecurity @dblevins @tomitribe
(LDAP)
Generate an
Access Token
(pointer)
DevNexus
#RESTSecurity @dblevins @tomitribe
(LDAP)
Insert both
into DB
DevNexus
#RESTSecurity @dblevins @tomitribe
(LDAP)
Send Access Token (pointer)
to client
DevNexus
#RESTSecurity @dblevins @tomitribe
Results
Client Holds Pointer Server Holds State
DevNexus
#RESTSecurity @dblevins @tomitribe
What we can do now
(Hello JWT!)
DevNexus
#RESTSecurity @dblevins @tomitribe
(LDAP)
Pull User Info
From IDP
DevNexus
#RESTSecurity @dblevins @tomitribe
(LDAP)
Format the data
as JSON
DevNexus
#RESTSecurity @dblevins @tomitribe
(LDAP)
RSA-SHA 256
sign JSON
DevNexus
#RESTSecurity @dblevins @tomitribe
(LDAP)
Insert only
pointer
into DB
(for revocation)
DevNexus
#RESTSecurity @dblevins @tomitribe
(LDAP)
Send Access Token (state)
to client
DevNexus
#RESTSecurity @dblevins @tomitribe
Client Holds State Server Holds Pointer
Desired
Results
DevNexus
#RESTSecurity @dblevins @tomitribe
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2 - Password Grant
(LDAP)
(Token ID Store)
POST /oauth2/token
Host: api.superbiz.io
User-Agent: curl/7.43.0
Accept: */*
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
grant_type=password&username=snoopy&password=woodstock
Verify
Password
Generate
Signed
Token
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.
eyJ0b2tlbi10eXBlIjoiYWNjZXNzLXRva2VuIiwidXNlcm5hb
WUiOiJzbm9vcHkiLCJhbmltYWwiOiJiZWFnbGUiLCJpc3M
iOiJodHRwczovL2RlbW8uc3VwZXJiaXouY29tL29hdXRoM
i90b2tlbiIsInNjb3BlcyI6WyJ0d2l0dGVyIiwibWFucy1iZXN0
LWZyaWVuZCJdLCJleHAiOjE0NzQyODA5NjMsImlhdCI6M
TQ3NDI3OTE2MywianRpIjoiNjY4ODFiMDY4YjI0OWFkOSJ
9.DTfSdMzIIsC0j8z3icRdYO1GaMGl6j1I_2DBjiiHW9vmDz8
OAw8Jh8DpO32fv0vICc0hb4F0QCD3KQnv8GVM73kSYaO
EUwlW0k1TaElxc43_Ocxm1F5IUNZvzlLJ_ksFXGDL_cuadh
VDaiqmhct098ocefuv08TdzRxqYoEqYNo",
"expires_in":3600,
"refresh_token":"eyJhbGctGzv3JOkF0XG5Qx2TlKWIAkF0X.
eyJ0b2tlbi10eXBlIjoiYWNjZXNzLXRva2VuIiwidXNlcm5hb
WUiOiJzbm9vcHkiLCJhbmltYWwiOiJiZWFnbGUiLCJpc3M
iOiJodHRwczovL",
}
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2.0 Message with JWT
POST /painter/color/palette HTTP/1.1

Host: api.superbiz.io

Authoriza>on: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbi10eXBlIjoiYWNjZXNzLXR
va2VuIiwidXNlcm5hbWUiOiJzbm9vcHkiLCJhbmltYWwiOiJiZWFnbGUiLCJpc3MiOiJodHRwczovL2RlbW8uc3VwZXJ
iaXouY29tL29hdXRoMi90b2tlbiIsInNjb3BlcyI6WyJ0d2l0dGVyIiwibWFucy1iZXN0LWZyaWVuZCJdLCJleHAiOjE0NzQy
ODA5NjMsImlhdCI6MTQ3NDI3OTE2MywianRpIjoiNjY4ODFiMDY4YjI0OWFkOSJ9.DTfSdMzIIsC0j8z3icRdYO1GaMGl
6j1I_2DBjiiHW9vmDz8OAw8Jh8DpO32fv0vICc0hb4F0QCD3KQnv8GVM73kSYaOEUwlW0k1TaElxc43_Ocxm1F5IUNZ
vzlLJ_ksFXGDL_cuadhVDaiqmhct098ocefuv08TdzRxqYoEqYNo
User-Agent: curl/7.43.0

Accept: */*

Content-Type: application/json

Content-Length: 46



{"color":{"b":0,"g":255,"r":0,"name":"green"}}
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2 + JWT
Tokens Sent
3000 TPS
(HTTP+SSL)
IP
whitelisting
0.55 TPS
(refresh token checks)
Password Sent
1000/daily
(HTTP+SSL)
OAuth 2
(LDAP)
4 hops
12000 TPS
backend
3000 TPS
(signature verification)
12000 TPS
(signature verification)
DevNexus
#RESTSecurity @dblevins @tomitribe
“Hey, give me all
of Joe’s salary
information.”
“Not a chance!”
DevNexus
#RESTSecurity @dblevins @tomitribe
“Hey, give me all
of Joe’s salary
information.”
“Sure thing!”
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth 2 + JWT
Valid
Tokens Sent
3000 TPS
(HTTP+SSL)
IP
whitelisting
0.55 TPS
(refresh token checks)
Password Sent
1000/daily
(HTTP+SSL)
(LDAP)
4 hops
12000 TPS
backend
9000 TPS
(signature verification)
12000 TPS
(signature verification)
Invalid
Tokens Sent
6000 TPS
(HTTP+SSL)
DevNexus
#RESTSecurity @dblevins @tomitribe
http://connect2id.com/products/nimbus-jose-jwt
Great JWT lib
DevNexus
#RESTSecurity @dblevins @tomitribe
HTTP Signatures
(Amazon EC2 style API Security)
DevNexus
#RESTSecurity @dblevins @tomitribe
HTTP Signatures
• No “secret” ever hits the wire
• Signs the message itself
• Proves identity
• Prevents message tampering
• Symmetric or Asymmetric signatures
• IETF Draft
• https://tools.ietf.org/html/draft-cavage-http-signatures
• Extremely simple
• Does NOT eliminate benefits of JWT (they’
DevNexus
#RESTSecurity @dblevins @tomitribe
Signature Message
POST /painter/color/palette HTTP/1.1

Host: api.superbiz.io

Authorization: Signature keyId=“my-key-name",
algorithm="hmac-sha256",
headers="content-length host date (request-target)”,
signature="j050ZC4iWDW40nVx2oVwBEymXzwvsgm+hKBkuw04b+w="

Date: Mon, 19 Sep 2016 16:51:35 PDT
Accept: */*

Content-Type: application/json

Content-Length: 46



{"color":{"b":0,"g":255,"r":0,"name":"green"}}
DevNexus
#RESTSecurity @dblevins @tomitribe
Signature closeup
Signature
keyId=“my-key-name",
algorithm="hmac-sha256",
headers="content-length host date (request-target)”,
signature="j050ZC4iWDW40nVx2oVwBEymXzwvsgm+hKBkuw04b+w=
DevNexus
#RESTSecurity @dblevins @tomitribe
Signature Auth
Password Sent
0 TPS
(HTTP)
Signature (no auth)
3000 TPS
(LDAP or Keystore)
12000 TPS
(HTTP)
DevNexus
#RESTSecurity @dblevins @tomitribe
Signature Auth
Password Sent
0 TPS
(HTTP)
Signature Signature
3000 TPS
(LDAP or Keystore)
12000 TPS
(HTTP)
DevNexus
#RESTSecurity @dblevins @tomitribe
“Hey, give me all
of Joe’s salary
information.”
“Hey, Larry!
Sure!”
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth and Signatures
Password Sent
3000 TPS
(HTTP+SSL)
OAuth 2 Signature
12000 TPS
(HTTP)
DevNexus
#RESTSecurity @dblevins @tomitribe
“Hey, give me all
of Joe’s salary
information.”
“Sure thing,
Larry!
Tell Joe I said hi.”
DevNexus
#RESTSecurity @dblevins @tomitribe
OAuth and Signatures
Password Sent
3000 TPS
(HTTP+SSL)
OAuth 2 Signature
12000 TPS
(HTTP)
Joe
Larry
Stan
DevNexus
#RESTSecurity @dblevins @tomitribe
Observations
• HTTP Signatures the only HTTP friendly approach
• Signatures does not solve the “Identity Load” problem
• OAuth 2 with JWT significantly improves IDP load
• Plain OAuth 2
• HTTP Session-like implications
• OAuth 2 with JWT
• Signed cookie
• Signing key to the future
DevNexus
#RESTSecurity @dblevins @tomitribe
Thank You!

More Related Content

PDF
2016 JavaOne Deconstructing REST Security
PDF
2017 JavaOne Deconstructing and Evolving REST Security
PDF
2017 Devoxx MA Deconstructing and Evolving REST Security
PDF
2018 IterateConf Deconstructing and Evolving REST Security
PDF
HotPics 2021
PDF
2019 ITkonekt Stateless REST Security with MicroProfile JWT
PDF
Side-Channels on the Web: Attacks and Defenses
PDF
2018 colombia deconstruyendo y evolucionando la seguridad en servicios rest
2016 JavaOne Deconstructing REST Security
2017 JavaOne Deconstructing and Evolving REST Security
2017 Devoxx MA Deconstructing and Evolving REST Security
2018 IterateConf Deconstructing and Evolving REST Security
HotPics 2021
2019 ITkonekt Stateless REST Security with MicroProfile JWT
Side-Channels on the Web: Attacks and Defenses
2018 colombia deconstruyendo y evolucionando la seguridad en servicios rest

What's hot (20)

PDF
ZN27112015
PPTX
Phreebird Suite 1.0: Introducing the Domain Key Infrastructure
PPT
Black ops of tcp2005 japan
PDF
Bh eu 05-kaminsky
PPT
Design Reviewing The Web
PPT
Bh us-02-kaminsky-blackops
PDF
End-to-End Analysis of a Domain Generating Algorithm Malware Family
PPTX
SnorGen User Guide 2.0
PDF
Real-Time with Flowdock
PDF
Class Project Showcase: DNS Spoofing
PDF
IoT Secure Bootsrapping : ideas
PDF
DNS over HTTPS
PDF
232 md5-considered-harmful-slides
PDF
Using Algorithms to Brute Force Algorithms...A Journey Through Time and Names...
PDF
支撐英雄聯盟戰績網的那條巨蟒
PPT
Dmk blackops2006
PPTX
Interpolique
PDF
Null HYD VRTDOS
PDF
[CB20]-U25 Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM ...
ODP
Apache httpd 2.4: The Cloud Killer App
ZN27112015
Phreebird Suite 1.0: Introducing the Domain Key Infrastructure
Black ops of tcp2005 japan
Bh eu 05-kaminsky
Design Reviewing The Web
Bh us-02-kaminsky-blackops
End-to-End Analysis of a Domain Generating Algorithm Malware Family
SnorGen User Guide 2.0
Real-Time with Flowdock
Class Project Showcase: DNS Spoofing
IoT Secure Bootsrapping : ideas
DNS over HTTPS
232 md5-considered-harmful-slides
Using Algorithms to Brute Force Algorithms...A Journey Through Time and Names...
支撐英雄聯盟戰績網的那條巨蟒
Dmk blackops2006
Interpolique
Null HYD VRTDOS
[CB20]-U25 Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM ...
Apache httpd 2.4: The Cloud Killer App
Ad

Viewers also liked (20)

PDF
Gluecon oauth-03
PDF
BBLL Concurso Fitur Twitter
PDF
DARE: Dream Access to Reality for Entrepreneur | Reality Show
PDF
Beyond Gamification: Architecting Engagement Through Game Design Thinking
PDF
The little cog - A Parable about Purpose
PDF
Gamification for startups
PDF
Access and Benefit-sharing of Animal Genetic Resources cgrfa16
PDF
Gamification of Life (part2)
PPTX
Gamification and startups
PPTX
Gamification 101 session 5
PPTX
Is nicotine reduction a viable policy for tobacco control? No, Definitely not...
PDF
A playful city
PDF
Estudio Mujeres con Impacto
PPTX
Correcting bias and variation in small RNA sequencing for optimal (microRNA) ...
PDF
Pwned Cloud Society - BsidesSLC 2017
PDF
Gamification of Life (part1)
PDF
PostgreSQL: Advanced features in practice
PDF
Une stratégie nationale en matière de gouvernance d'internet
PDF
About Gamification
PDF
Introduction to Gamification (10th Digital Media Exhibition - Tehran)
Gluecon oauth-03
BBLL Concurso Fitur Twitter
DARE: Dream Access to Reality for Entrepreneur | Reality Show
Beyond Gamification: Architecting Engagement Through Game Design Thinking
The little cog - A Parable about Purpose
Gamification for startups
Access and Benefit-sharing of Animal Genetic Resources cgrfa16
Gamification of Life (part2)
Gamification and startups
Gamification 101 session 5
Is nicotine reduction a viable policy for tobacco control? No, Definitely not...
A playful city
Estudio Mujeres con Impacto
Correcting bias and variation in small RNA sequencing for optimal (microRNA) ...
Pwned Cloud Society - BsidesSLC 2017
Gamification of Life (part1)
PostgreSQL: Advanced features in practice
Une stratégie nationale en matière de gouvernance d'internet
About Gamification
Introduction to Gamification (10th Digital Media Exhibition - Tehran)
Ad

Similar to 2017 dev nexus_deconstructing_rest_security (20)

PDF
2018 SDJUG Deconstructing and Evolving REST Security
PDF
Deconstructing and Evolving REST security
PDF
2018 Madrid JUG Deconstructing REST Security
PDF
Deconstructing and Evolving REST Security
PDF
2018 Denver JUG Deconstructing and Evolving REST Security
PDF
2018 jPrime Deconstructing and Evolving REST Security
PDF
2018 Boulder JUG Deconstructing and Evolving REST Security
PDF
2018 JavaLand Deconstructing and Evolving REST Security
PDF
Rest api titouan benoit
PDF
2018 ecuador deconstruyendo y evolucionando la seguridad en servicios rest
PDF
Stateless Microservice Security via JWT and MicroProfile - Guatemala
PDF
Stateless Microservice Security via JWT and MicroProfile - Mexico
PDF
Stateless Microservice Security via JWT and MicroProfile - ES
PDF
Dublin JUG Stateless Microservice Security via JWT, TomEE and MicroProfile
PDF
Secured REST Microservices with Spring Cloud
PPTX
(1) OAuth 2.0 Overview
PDF
Seguridad en microservicios via micro profile jwt
PPTX
OAuth2 para desarrolladores
PDF
[OSSParis 2015] The OpenID Connect Protocol
PDF
REST in theory
2018 SDJUG Deconstructing and Evolving REST Security
Deconstructing and Evolving REST security
2018 Madrid JUG Deconstructing REST Security
Deconstructing and Evolving REST Security
2018 Denver JUG Deconstructing and Evolving REST Security
2018 jPrime Deconstructing and Evolving REST Security
2018 Boulder JUG Deconstructing and Evolving REST Security
2018 JavaLand Deconstructing and Evolving REST Security
Rest api titouan benoit
2018 ecuador deconstruyendo y evolucionando la seguridad en servicios rest
Stateless Microservice Security via JWT and MicroProfile - Guatemala
Stateless Microservice Security via JWT and MicroProfile - Mexico
Stateless Microservice Security via JWT and MicroProfile - ES
Dublin JUG Stateless Microservice Security via JWT, TomEE and MicroProfile
Secured REST Microservices with Spring Cloud
(1) OAuth 2.0 Overview
Seguridad en microservicios via micro profile jwt
OAuth2 para desarrolladores
[OSSParis 2015] The OpenID Connect Protocol
REST in theory

More from David Blevins (8)

PDF
DevNexus 2020 - Jakarta Messaging 3.x, Redefining JMS
PDF
2019 JJUG CCC Stateless Microservice Security with MicroProfile JWT
PDF
2017 JCP EC: Configuration JSR
PDF
2015 JavaOne EJB/CDI Alignment
PDF
JavaOne 2013 - Apache TomEE, Java EE Web Profile {and more} on Tomcat
PDF
2011 JavaOne EJB with Meta Annotations
PDF
2011 JavaOne Apache TomEE Java EE 6 Web Profile
PDF
2011 JavaOne Fun with EJB 3.1 and OpenEJB
DevNexus 2020 - Jakarta Messaging 3.x, Redefining JMS
2019 JJUG CCC Stateless Microservice Security with MicroProfile JWT
2017 JCP EC: Configuration JSR
2015 JavaOne EJB/CDI Alignment
JavaOne 2013 - Apache TomEE, Java EE Web Profile {and more} on Tomcat
2011 JavaOne EJB with Meta Annotations
2011 JavaOne Apache TomEE Java EE 6 Web Profile
2011 JavaOne Fun with EJB 3.1 and OpenEJB

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
A Presentation on Artificial Intelligence
PDF
KodekX | Application Modernization Development
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Electronic commerce courselecture one. Pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
cuic standard and advanced reporting.pdf
PDF
NewMind AI Monthly Chronicles - July 2025
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Machine learning based COVID-19 study performance prediction
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
A Presentation on Artificial Intelligence
KodekX | Application Modernization Development
Reach Out and Touch Someone: Haptics and Empathic Computing
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
MYSQL Presentation for SQL database connectivity
Electronic commerce courselecture one. Pdf
Spectral efficient network and resource selection model in 5G networks
cuic standard and advanced reporting.pdf
NewMind AI Monthly Chronicles - July 2025
The AUB Centre for AI in Media Proposal.docx
Machine learning based COVID-19 study performance prediction
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Chapter 3 Spatial Domain Image Processing.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
The Rise and Fall of 3GPP – Time for a Sabbatical?
Big Data Technologies - Introduction.pptx
Understanding_Digital_Forensics_Presentation.pptx

2017 dev nexus_deconstructing_rest_security