Slide 1

Slide 1 text

Securing Spring Boot Microservices with OAuth and OpenID Connect Deepu K Sasidharan

Slide 2

Slide 2 text

@oktaDev | @deepu105 | deepu.tech ➔ JHipster co-chair ➔ Java Champion ➔ Creator of KDash, JDL Studio, JWT UI ➔ Developer Advocate @ Okta ➔ OSS aficionado, polyglot dev, author, speaker Hi, I’m Deepu K Sasidharan @deepu105@mastodon.social deepu.tech @deepu105 deepu05

Slide 3

Slide 3 text

@oktaDev | @deepu105 | deepu.tech Agenda OAuth2 & OIDC crash course (15 mins) Workshop labs (60 mins) Bonus labs (15 mins)

Slide 4

Slide 4 text

@oktaDev | @deepu105 | deepu.tech a0.to/spring-boot

Slide 5

Slide 5 text

@oktaDev | @deepu105 | deepu.tech OAuth2 and OpenID Connect A crash course

Slide 6

Slide 6 text

@oktaDev | @deepu105 | deepu.tech OAuth 2 crash course

Slide 7

Slide 7 text

@oktaDev | @deepu105 | deepu.tech Authorization Process of determining whether a user has the necessary permissions to access a resource. OAuth 2.0 is the industry-standard protocol for delegated authorization.

Slide 8

Slide 8 text

@oktaDev | @deepu105 | deepu.tech System Roles Resource Owner →End user Resource Server →API Server Client →System requesting access Authorization Server →Authenticate and issue tokens

Slide 9

Slide 9 text

@oktaDev | @deepu105 | deepu.tech Tokens Access Token →Authorization to access a resource Authorization Code →Short lived token to get an access token Refresh Token →Long lived token to get new access tokens

Slide 10

Slide 10 text

@oktaDev | @deepu105 | deepu.tech Claim →KV pair assertion with user info Scope →Group of claims or permission limiting access

Slide 11

Slide 11 text

@oktaDev | @deepu105 | deepu.tech OAuth 2.0 Grants Authorization Code Grant →Exchange authorization code for access token (secure clients) Implicit Grant →Get access token directly (SPA, native apps) Client Credentials Grant →Access token without user interaction (confidential clients) Resource Owner Password Credentials Grant →Access token using user credentials (trusted clients)

Slide 12

Slide 12 text

@oktaDev | @deepu105 | deepu.tech OAuth 2.1 Grants Authorization Code Grant with PKCE →Exchange authorization code for access token (secure clients, SPAs, native apps) Client Credentials Grant →Access token without user interaction (confidential clients)

Slide 13

Slide 13 text

@oktaDev | @deepu105 | deepu.tech Other Grants Refresh Token Grant→Exchange refresh token for access token Extension Grants →Device Authorization Grant, Token Exchange Grant, etc.

Slide 14

Slide 14 text

@oktaDev | @deepu105 | deepu.tech Authorization Code Grant Flow (Not recommended) Authorization request { client_id, response_type=code, redirect_uri=..., scope, state, etc } Token request { client_id, client_secret, authorization_code, grant_type=authorization_code, redirect_uri, etc }

Slide 15

Slide 15 text

@oktaDev | @deepu105 | deepu.tech Authorization Code Grant Flow with PKCE Authorization request { client_id, response_type=code, redirect_uri=..., code_challenge, scope, state, etc, } Token request { client_id, code_verifier, authorization_code, grant_type=authorization_code, redirect_uri, etc }

Slide 16

Slide 16 text

@oktaDev | @deepu105 | deepu.tech Implicit Grant Flow (Not recommended) Authorization request { client_id, response_type=token, redirect_uri=..., scope, state, etc } Token request NA

Slide 17

Slide 17 text

@oktaDev | @deepu105 | deepu.tech Client Credentials Grant Flow Authorization request NA Token request { client_id, client_secret, grant_type=client_credentials }

Slide 18

Slide 18 text

@oktaDev | @deepu105 | deepu.tech Resource Owner Password Credentials Grant Flow (Not recommended) Authorization request NA Token request { client_id, client_secret, username, password, grant_type=password }

Slide 19

Slide 19 text

@oktaDev | @deepu105 | deepu.tech Refresh Token Grant Flow Authorization request NA Token request { client_id, client_secret, refresh_token, grant_type=refresh_token }

Slide 20

Slide 20 text

@oktaDev | @deepu105 | deepu.tech OpenID Connect crash course

Slide 21

Slide 21 text

@oktaDev | @deepu105 | deepu.tech Authentication Process of verifying the identity of a user. OAuth lacked a standard way to authenticate users. OpenID Connect (OIDC) is an identity layer built on top of the OAuth 2.0 framework

Slide 22

Slide 22 text

@oktaDev | @deepu105 | deepu.tech OIDC using Authorization Code Grant Flow with PKCE Authorization request { client_id, response_type=code, redirect_uri=..., code_challenge, scope=’openid,..’, state, etc, } Token request { client_id, code_verifier, authorization_code, grant_type=authorization_code, redirect_uri, etc }

Slide 23

Slide 23 text

@oktaDev | @deepu105 | deepu.tech Pre-Requisites

Slide 24

Slide 24 text

@oktaDev | @deepu105 | deepu.tech ● IntelliJ IDEA or Eclipse ● Java 17+ (SDKMAN) ● Docker and Docker Compose ● Bash/ZSH or Powershell 5+

Slide 25

Slide 25 text

@oktaDev | @deepu105 | deepu.tech ● Auth0 Account ● Install Auth0 CLI

Slide 26

Slide 26 text

@oktaDev | @deepu105 | deepu.tech Chapters Part 1: Create an API server secured with OAuth2 Part 2: Create a webapp secured with OIDC Part 3: Enable RBAC Part 4: Create a discovery service and complete the microservices

Slide 27

Slide 27 text

@oktaDev | @deepu105 | deepu.tech Bonus Move beyond passwords with passkeys Using Keycloak with Okta starter

Slide 28

Slide 28 text

@oktaDev | @deepu105 | deepu.tech Part 1: Create a car service secured with OAuth2 This will be the API resource server for the microservices

Slide 29

Slide 29 text

@oktaDev | @deepu105 | deepu.tech Part 2: Create a web app secured with OIDC This will be the API gateway for the microservices

Slide 30

Slide 30 text

@oktaDev | @deepu105 | deepu.tech Part 3: Enable RBAC

Slide 31

Slide 31 text

@oktaDev | @deepu105 | deepu.tech Part 4: Create a discovery service and microservice arch With this we complete the simple microservice architecture

Slide 32

Slide 32 text

@oktaDev | @deepu105 | deepu.tech Bonus 1: Use passkeys Enable passkeys for logging in

Slide 33

Slide 33 text

@oktaDev | @deepu105 | deepu.tech Bonus 2: Use Keycloak Use Keycloak with Okta Spring Boot Starter for offline support

Slide 34

Slide 34 text

Authorization Authentication Security Single Sign-On | Adaptive Multi-Factor Authentication | Universal Login | Passwordless | Bot Detection & Prevention | Security Center | Breached Password Detection | Brute Force Protection | FGA How we can help: Try Free Today: Free Plan (forever) $0 Up to 7,500 monthly active users. Unlimited user logins. Includes passkeys support*. No credit card required. Special Plans for Startups & Nonprofits Plans for Everyone B2C: your users are consumers B2B: your users are businesses or a mix of businesses and consumers Enterprise: Best for production applications that need to scale - Contact Us Make login our problem. Not yours. a0.to/plg_signup

Slide 35

Slide 35 text

@oktaDev | @deepu105 | deepu.tech Thank You Subscribe to our newsletter a0.to/nl-signup/java Try our free Spring Boot + Passkeys workshop a0.to/spring-boot