181
Keycloak Prosty sposób na bezpieczeństwo i uwierzytelnianie w nowoczesnych aplikacjach Andrzej Goławski PPL, PANSA, OSEC Bolesław Dawidowicz Red Hat

Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

KeycloakProsty sposób na bezpieczeństwo i

uwierzytelnianie w nowoczesnych aplikacjach

Andrzej Goławski PPL, PANSA, OSEC

Bolesław Dawidowicz Red Hat

Page 2: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Before we begin…

Page 3: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Agenda - Part 1 [Slides]• What is Keycloak ~ 3min

• Token based security ~ 10min

• Quick tour on modern standards ~10min

• SAML2

• OAuth2

• OpenID Connect

Page 4: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Agenda - Part 2

• Key Keycloak features ~ 5min

Page 5: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Agenda - Part 3 [Demo]

• Awesome Demo by Andrzej :)

Page 6: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

What is Keycloak?

Page 7: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Identity Solution for Modern Applications,

Services and APIs.

Page 8: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Keycloak provides• Authentication

• SSO

• Session Management

• User Self Services

• Auditing

• Authorization

Page 9: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Keycloak focuses on…• Modern Applications

• Web & Mobile

• Client Side (HTML5/JS) & Server Side

• (Micro)Services and APIs

• Any technology being used in them

Page 10: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Is NOT ONLY for JAVA applications

Java being implementation detail…

Page 11: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Keycloak integrates well with

• Existing infrastructure

• LDAPs / RDBMSs / Custom user storage

• External Identity Providers

• Kerberos

• Social Providers

Page 12: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Relies on standards• SAML 2

• Keycloak is SAML2 IdP and provides SAML2 SP libraries

• OpenID Connect

• Keycloak is OIDC Authorisation Server and uses this standard in its client adapters

• Kerberos

• Provides Web SSO integration

Page 13: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Focusing on being super easy to integrate with

Will show how easy during second part of this presentation

Page 14: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Provides very good user experience with extensive

Management UI

Page 15: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 16: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Thats all..

Page 17: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Now lets take a step back… and set some

context

Page 18: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Modern security architecture and

standardsand what is happening behind the scenes

Page 19: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

In the old days… … all used to be simple ;)

Page 20: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Server Side Apps

Page 21: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Form based security

Cancel Login

Username

PasswordHash / Compare

Page 22: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Old Architecture• Usually server side

• Passwords

• Simple session management

• Invalidate to logout

• Cookies

Page 23: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Not anymore…

Page 24: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Passwords

• Not easy to store and validate

• Hard to enforce using strong and unique ones

• Problematic to pass around in safe manner

Page 25: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

New credential types

• Not always easy to adapt application to support them

Page 26: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Session Management

• Simple for server side applications

• Complex for mobile and HTML5 applications

Page 27: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

External Users

• Other Companies

• Our partners or customers

• No access to their database

• Social Networks

Page 28: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Single Sign On

Page 29: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Single Sign OutInvalidate all your sessions in one place

Page 30: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Mobile Devices

• Using app for 10 min every 2 months … and remain logged in!

• Authentication within application

• Safe storage of credentials

• Cut of access when device is lost

Page 31: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

TokensModern security standards are all about them…

Page 32: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Tokens / Tickets / Assertions

Page 33: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

What is a token?• (XML / JSON / Whatever) document with some

payload

• Information about user

• Name, organisation, roles, authentication method, timestamp, lifespan, etc.

• Can be signed

Page 34: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Tokens are signed

• Ensure they were not tampered

• No one altered them in the meantime

• Trust them without additional check with issuer.

• No communication overhead

Page 35: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Why Tokens?

• Decoupling authentication / authorization

• Not relying on specific method

• Mobile / Server Side and Client Side apps will authenticate differently.

• How this info is passed around

Page 36: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

FlexibleYou can decide what they contain

Page 37: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Why Tokens?

• Contain any additional information needed

• Can have defined lifetime

• Can be invalidated or managed in central manner

Page 38: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Ok but… why tokens help?

Page 39: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Delegation of authentication to dedicated and trusted

server / provider

Page 40: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Providing credentials to only one selected entity

Page 41: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 42: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Here authentication

happens

Page 43: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 44: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

ContainsIdentity Info

Page 45: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

AuthorizationDecision

(based on token)

Page 46: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

No Communication Needed !!!

Page 47: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Typical Components

Page 48: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Identity Provider / Authorization Server

• Stores user data and credentials

• Performing authentication

• Issuing, verifying and revoking tokens

Page 49: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Service Provider / Resource / Resource Server

• Exposing data or operations to be accessed by:

• user

• application on behalf of the user

Page 50: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

User / Client / Relying Party

• User (e.g. via Browser)

• Applications acting on behalf of the user (e.g. Mobile App)

• Backend Service or App (e.g. Microservices)

Page 51: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

In practice?

Page 52: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

ACME

Page 53: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

ACME

Token

Page 54: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

ACME

Token

Here you authenticate (providing credential).

Within company firewall/VPN

Cancel Login

Username

Password

Page 55: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

ACME

Token

Here you authenticate (providing credentials).

Within company firewall/VPN

Here you get access (no credentials)

Cancel Login

Username

Password

Page 56: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

ACME

Token

Here you authenticate (providing credential).

Within company firewall/VPN

Here you get access (no credentials)

ACME remains in control of shared

user information

Cancel Login

Username

Password

Page 57: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Web SSO(Single Sign On)

Page 58: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Federation

Page 59: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

SAML 2

Page 60: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

SAML 2

• OASIS Standard

• Version 1.0 in 2001

• Version 2.0 in 2005

Page 61: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

SAML 2 Facts• XML token - verbose and heavy

• Complex flows, lot of different profiles

• Very mature and widely adopted

• Many binding types - SOAP for e.g.

• High learning curve

• Doesn’t fit mobile use cases well.

Page 62: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

SAML 2 - Federation

• Authentication and authorization between organisations

• Not sharing access or ownership to user data

• Trusting external Identity Provider

Page 63: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

SAML2 is very widely adopted

de facto standard

Page 64: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

What is the issue with SAML2 and mobile?

Page 65: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

SAML2 was not designed with mobile and modern

web in mind…

Page 66: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

POST vs GET

Page 67: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

There are ways to workaround it…… still it always remains a workaround…

Page 68: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Newcomers…

Page 69: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

OAuth2 & OpenID Connect

Page 70: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Modern security needs

• Client Side Apps (HTML 5 / JS / Stateless)

• Mobile Apps

• (Micro)Services / APIs

Page 71: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

First of all..

Page 72: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Tokens! :)Worth understanding how they really look like…

Page 73: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Token standards

• Kerberos

• SAML 2

• JWT (JSON Web Token)

Page 74: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

JSON Web Token

Page 75: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

JOSE• JSON Object Signing and Encryption

• Set of IETF open standards (RFCs)

• JWT - JSON Web Token

• JWS - JSON Web Signature

• JWE - JSON Web Encryption

• JWA - JSON Web Algorithms

• JWK - JSON Web Key

Page 76: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

JWT (JSON Web Token)

• JSON Document

• Key [String] : Value [JSON]

• Wide choice of signing algorithms

Page 77: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Anatomy• Simple JSON, Encoded in Base64

• Three parts

• Header

• Payload

• Signature

Page 78: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

{ "alg": "HS256", "typ": "JWT" }

{ "iss": "joe", "exp": 1300819380, "human": true, "over 18": true }

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJqb2UiLCJleHAiOjEzMDA4MTkzODAsImh1bWFuIjp0cnVlLCJvdmVyIDE4Ijp0cnVlfQ.0LtIxMRXW0VItgVqhQGUJCEjzWpnXptQOWxn9wGDyW4

Header in Base64: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

Payload in Base64: eyJpc3MiOiJqb2UiLCJleHAiOjEzMDA4MTkzODAsImh1bWFuIjp0cnVlLCJvdmVyIDE4Ijp0cnVlfQ

Header

Payload

JSON Web Token

Page 79: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

{ "alg": "HS256", "typ": "JWT"}

{ "iss": "joe", "exp": 1300819380, "human": true, "over 18": true }

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJqb2UiLCJleHAiOjEzMDA4MTkzODAsImh1bWFuIjp0cnVlLCJvdmVyIDE4Ijp0cnVlfQ.0LtIxMRXW0VItgVqhQGUJCEjzWpnXptQOWxn9wGDyW4

Header in Base64: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

Payload in Base64: eyJpc3MiOiJqb2UiLCJleHAiOjEzMDA4MTkzODAsImh1bWFuIjp0cnVlLCJvdmVyIDE4Ijp0cnVlfQ

Header

Payload

JSON Web Token

Page 80: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

{ "alg": "HS256", "typ": "JWT" }

{ "iss": "joe", "exp": 1300819380, "human": true, "over 18": true }

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJqb2UiLCJleHAiOjEzMDA4MTkzODAsImh1bWFuIjp0cnVlLCJvdmVyIDE4Ijp0cnVlfQ.0LtIxMRXW0VItgVqhQGUJCEjzWpnXptQOWxn9wGDyW4

Header in Base64: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ

9

Payload in Base64: eyJpc3MiOiJqb2UiLCJleHAiOjEzMDA4MTkzODAsImh1bWFuIjp0cnVlLCJvdmVyIDE4Ijp0cnVlfQ

Header

Payload

JSON Web Token

Page 81: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

{ "alg": "HS256", "typ": "JWT" }

{ "iss": "joe", "exp": 1300819380, "human": true, "over 18": true}

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJqb2UiLCJleHAiOjEzMDA4MTkzODAsImh1bWFuIjp0cnVlLCJvdmVyIDE4Ijp0cnVlfQ.0LtIxMRXW0VItgVqhQGUJCEjzWpnXptQOWxn9wGDyW4

Header in Base64: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

Payload in Base64: eyJpc3MiOiJqb2UiLCJleHAiOjEzMDA4MTkzODAsImh1bWFuIjp0cnVlLCJvdmVyIDE4Ijp0cnVlfQ

Header

Payload

JSON Web Token

Page 82: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

{ "alg": "HS256", "typ": "JWT" }

{ "iss": "joe", "exp": 1300819380, "human": true, "over 18": true }

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJqb2UiLCJleHAiOjEzMDA4MTkzODAsImh1bWFuIjp0cnVlLCJvdmVyIDE4Ijp0cnVlf

Q.0LtIxMRXW0VItgVqhQGUJCEjzWpnXptQOWxn9wGDyW4

Header in Base64: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

Payload in Base64: eyJpc3MiOiJqb2UiLCJleHAiOjEzMDA4MTkzODAsImh1bWFuIjp0cnVlLCJvdmVyIDE4Ijp0cnV

lfQ

Header

Payload

JSON Web Token

Page 83: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

{ "alg": "HS256", "typ": "JWT" }

{ "iss": "joe", "exp": 1300819380, "human": true, "over 18": true }

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJqb2UiLCJleHAiOjEzMDA4MTkzODAsImh1bWFuIjp0cnVlLCJvdmVyIDE4Ijp0cnVlfQ.0LtIxMRXW0VItgVqhQGUJCEjzWpnXptQOWxn9wGDyW4

Header in Base64: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

Payload in Base64: eyJpc3MiOiJqb2UiLCJleHAiOjEzMDA4MTkzODAsImh1bWFuIjp0cnVlLCJvdmVyIDE4Ijp0cnVlfQ

Header

Payload

JSON Web Token

Hash

Page 84: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

<header-base64>.<payload-base64>.<signature-base64>

Page 85: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Simple!

Page 86: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

All you need to know to parse it in your app! ;)

Page 87: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

OAuth2

Page 88: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Who knows or used OAuth2?

Page 89: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Everyone ;)

Page 90: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 91: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 92: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

source: aaronparecki.com

Page 93: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

OAuth2 - Some facts• Many major companies behind it

• Google, Facebook, Twitter and etc.

• 2.0 incompatible with 1.x

• Becoming de facto standard security framework for

• Mobile Apps

• Client Side

• APIs / Services

Page 94: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Major usecase?

Page 95: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

NOT for authentication …

Page 96: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

NOT for authorization …

Page 97: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

DELEGATION protocol

Page 98: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Applications & Services acting on behalf of the

user

Page 99: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

OAuth2 Actors• Resource owner - YOU! :)

• Client - application acting on your behalf

• Resource / Resource Server - APIs accessed by Client

• Authorization Server - Place where you authenticate and where tokens are being issued

Page 100: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Authorization flows• Authorization Code - Server Side Application

• Implicit - Client Side and Mobile Apps

• Resource Owner - Directly using username / password

• Client Credentials - For app related operations - app identity

Page 101: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Authorization Code Flow

Server Side Applications

Page 102: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Authorization Server Resource Server

ClientResource Owner

Page 103: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Authorization Server Resource Server

Resource Owner

Client ID

Client

Page 104: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Authorization Server Resource Server

Resource Owner

AuthorizationCode

Client

Page 105: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Authorization Server Resource Server

Resource Owner

Authorization CodeClient IDClient Secret

Client

Page 106: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Authorization Server Resource Server

Resource Owner

Refresh TokenAccess Token

Client

Page 107: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Authorization Server Resource Server

Resource Owner

Access Token

Client

Page 108: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

ImplicitClient Side & Mobile

Page 109: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Authorization Server Resource Server

Client

Page 110: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Authorization Server Resource Server

Client

Access Token

Page 111: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Authorization Server Resource Server

Client

Access Token

Page 112: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

OAuth2 - Scopes• During authorization user grants application access

with given scope

• e.g. Basic profile info only (full name & email)

• e.g. Information about all your social graph (friends on FB)

• e.g. Write access to FB wall

Page 113: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 114: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

OAuth2 - Summary

• Is pretty generic

• Doesn’t define specific token standard

• Lacks on authentication and user info side

• Many consider it more “a protocol framework” then protocol itself.

Page 115: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Scales and adapts nicely

Just teach your (micro)Service to understand JWT!

Page 116: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Cancel Login

Username

Password

Page 117: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

OpenID Connect

Page 118: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

OpenID Connect• Builds on top of OAuth2

• Adds two new flows

• Adds session management -

• e.g. Single Sign On & Out for HTML5 apps

• ID token

• User info endpoint

• Discovery & Clients self registration

Page 119: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Getting widely adopted…

and being pushed by Google, MSFT and etc.

Page 120: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

OpenID Connect is what people should consider

for new developmentFor any new modern application

Page 121: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

OpenID Connect is what Keycloak is using

Communication protocol between Keycloak Server and Keycloak client adapters installed in each secured application

Page 122: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Still there is a lot of existing infrastructure in

place…

Page 123: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Keycloak aim is to provide the easiest way

to integrate with it.

Page 124: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 125: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Identity Brokering

Page 126: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 127: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 128: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Here is your existing / legacy

infrastructure

Page 129: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Here is your modern stuff

Here is your existing / legacy

infrastructure

Page 130: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 131: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 132: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 133: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Will handle existing / legacyinfra integration

for you !!!

Page 134: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Externalise Security

Page 135: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Integrate with OOTB Identity Solution

Page 136: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Security is hardDon’t reinvent (or reimplement) things yourself…

Page 137: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 138: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

It should be easy for developers!

Major mission of Keycloak

Page 139: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

How does it work?

Page 140: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

<button onclick=“keycloak.login()”> Login</button>

Most basic HTML5 Hello World example…

Page 141: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

SCREENSHOT TBD

Page 142: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

OOTB Client Adapters

• JBoss EAP & WildFly

• JBoss Fuse

• JBoss BxMS

• Spring

• Tomcat / Jetty

• … custom …

• JavaScript

• NodeJS

• Mobile (Cordova / Native)

• Any OIDC compat library

• mod-auth-mellon on Apache

• Reverse Web Proxy

Page 143: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

What do you get?When you click on this “Login” button…

Page 144: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

SCREENSHOT TBD

Page 145: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 146: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 147: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 148: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 149: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 150: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 151: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 152: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 153: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

All of this within few minutes (and clicks)

Page 154: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Want to make it look like part of your application?

Page 155: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Sure!

Page 156: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 157: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

My users need to accept “Terms & Conditions” page during auth…

Page 158: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 159: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 160: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

User Self Management?

Page 161: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 162: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Let them setup OTP?

Page 163: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing
Page 164: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Let them manage all their active sessions in one

place?

Page 165: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

SCREENSHOT TBD

Page 166: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Want to logout users yourself as an admin?

Page 167: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

SCREENSHOT TBD

Page 168: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Impersonate user?

Page 169: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

SCREENSHOT TBD

Page 170: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

And much more…… of stuff you don’t need to implement yourself

Page 171: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Some (of many) features• Session management

• Identity Management (with UI screens)

• Security Defences

• Password policies

• User impersonation

• ….

Page 172: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Lot of things challenging to implement securely…

… they take time…. and remember about possible vulnerabilities as well…

Page 173: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

What remains for you?• Configure client adapter

• Get (more) information from the token

• Call REST endpoints

• Obtain additional information

• Perform additional operations

Page 174: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

And btw. how hard is to register a new

authentication client with it?

Page 175: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Just copy paste configuration snippet…

Page 176: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

SCREENSHOT TBD

Page 177: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

or use client self registration capabilities…

Page 178: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Single Sign Out of many HTML5 applications?

Page 179: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

Sure…

Page 180: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

and etc.

Page 181: Keycloak - Torun JUG · Keycloak provides • Authentication ... • Backend Service or App (e.g. Microservices) In practice? ACME. ACME Token. ACME Token Here you authenticate (providing

DEMO TIME