java jwts for csrf prevention and microservices

14
JWTs for CSRF and Microservices

Upload: remy-champion

Post on 12-Jan-2017

262 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Java JWTs for CSRF Prevention and Microservices

JWTsfor

CSRF and Microservices

Page 2: Java JWTs for CSRF Prevention and Microservices

Welcome! • Agenda

• Stormpath 101 (5 mins)• JWT with CSRF & Microservices (40 mins)• Q&A (15 mins)

• Claire HunsakerVP of Marketing

• Micah SilvermanJava Developer Evangelist

Page 3: Java JWTs for CSRF Prevention and Microservices

Speed to Market & Cost Reduction• Complete Identity solution out-of-the-box• Security best practices and updates by default• Clean & elegant API/SDKs• Little to code, no maintenance

Page 4: Java JWTs for CSRF Prevention and Microservices

Stormpath User Management

User Data

User Workflows Google ID

Your ApplicationsApplication SDK

Application SDK

Application SDK

ID Integrations

Facebook

Active Directory

SAML

Page 5: Java JWTs for CSRF Prevention and Microservices

Let’s talk about CSRF!

Page 6: Java JWTs for CSRF Prevention and Microservices

encodeSecret =

"4pE8z3PBoHjnV1AhvGk+e8h2p+ShZpOnpr8cwHmMh1w="

computeHMACSHA256(

header + "." + payload,

base64DecodeToByteArray(encodedSecret)

)

Signature Computation Pseudo-code

Page 7: Java JWTs for CSRF Prevention and Microservices

JWTSecret Anti-Patterns

Page 8: Java JWTs for CSRF Prevention and Microservices

.signWith( SignatureAlgorithm.HS256, "secret".getBytes("UTF-8") )

Short but not Sweet

Page 9: Java JWTs for CSRF Prevention and Microservices

String b64EncodedSecret = "Yn2kjibddFAWtnPJ2AFlL8WXmohJMCvigQggaEypa5E=";

.signWith(

SignatureAlgorithm.HS256,

b64EncodedSecret.getBytes("UTF-8")

)

You’re Doing it Wrong

Page 10: Java JWTs for CSRF Prevention and Microservices

String b64EncodedSecret = "Yn2kjibddFAWtnPJ2AFlL8WXmohJMCvigQggaEypa5E=";

.signWith(

SignatureAlgorithm.HS512,

TextCodec.BASE64.decode(b64EncodedSecret)

)

Supersize that Secret!

Page 11: Java JWTs for CSRF Prevention and Microservices

"Microservices are awesome, but they're not free."

- Les Hazlewood, Stormpath CTO

Page 12: Java JWTs for CSRF Prevention and Microservices

Monolithic SOA

AuthenticationServiceAuthorizationServiceApplicationService

OrganizationServiceDirectoryServiceAccountServiceGroupService

DatabaseInfrastructure

Page 13: Java JWTs for CSRF Prevention and Microservices

Microservices

DatabaseInfrastructure

GroupServiceAccountService

AuthenticationService AuthorizationService

ApplicationService OrganizationService DirectoryService

Page 14: Java JWTs for CSRF Prevention and Microservices

Resources• Repos used in today’s preso:

○ github.com/jwtk/jjwt○ github.com/stormpath/roadstorm-jwt-csrf-tutorial○ github.com/stormpath/roadstorm-jwt-microservices-

tutorial• JJWT Guest Post on Baeldung - bit.ly/29ZPZAd• Stormpath Microservices Screencast -

bit.ly/29Wi6iw• JWT Inspector - jwtinspector.io• HTTPie - github.com/jkbrzt/httpie• What are Microservices?

○ martinfowler.com/articles/microservices.html• @afitnerd @goStormpath

[email protected]