Skip to content

Instantly share code, notes, and snippets.

@rafaeltuelho
Last active July 26, 2022 23:19
Show Gist options
  • Save rafaeltuelho/c4828687aa02af42c7642e4bcb61853f to your computer and use it in GitHub Desktop.
Save rafaeltuelho/c4828687aa02af42c7642e4bcb61853f to your computer and use it in GitHub Desktop.
Keycloak Project (Red HAt SSO)

Keycloak Project

Principais características

Keycloak é uma Solução de Identidade para aplicações modernas, Serviços e APIs

Fornece as seguintes funcionalidades:

  • Autenticação
  • Autorização
  • Single Sign On
  • Session Management
  • Portal do Usuário Self Service
  • Auditoria

Por aplicações modernas Keycloak foca em:

  • Web & Mobile
  • Client Side (HTML5/JS)
  • Server Side (múltiplas plataformas/linguagens)
  • (Micro) Serviços e APIs

Apesar de ser construído em Java Keycloak ele não se aplica apenas para Java EE.

Keycloak suporta e implementa os seguintes Protocolos/Padrões de Mercado

  • SAML 2: IdP e SP libs
  • OpenID Connect: OIDC Authorization Server
  • Oauth 2
  • Kerberos: Web SSO

Fornece uma interfae gráfica para gestão de usuários

Conceitos

###Tokens Documento com um conteúdo específico (payload)

O payload contém informações que identificam um usuário

O token pode ser assinado para fins de integridade e confiabilidade

O token possui um "tempo de vida" prédefinido

Um dos principais motivos de se usar o mecanismo de token é o desacoplamento entre o processo de autenticação e autorização

Padrões de Tokens

  • Kerberos (TGT)

  • SAML 2

  • JWT (JSON Web Token)

  • parte do conjunto de padrões conhecido como JOSE (JSON Object Signing and Encription)

  • JWT

  • JWS

  • JWE

  • JWA

  • JWK

  • Possui 3 partes codificadas em base64

  • Header

  • Payload

  • Signature

  • Usado no padrão OAuth2

####Oauth2

Usado para delegação (aplicações ou serviços atuando em nome (representante) de usuários)

Atores:

  • Resource owner: você!
  • Client: aplicação atuando em seu nome (seu representante)
  • Resource/Resource Server: API ou Serviço acessado pelo client
  • Authorization Server: responsável pela autorização e emissão de tokens

Fluxos de Autorização:

  • Authorization Code: Server Side app

  • Cliend ID

  • Auth Code

  • Client ID

  • Client Secret

  • Access Token

  • Refresh Token

  • Implicit: Client Side e Mobile App

  • Access Token

  • Resource Owner: usando crednciais diretamente (username/password)

  • Client Credentials: usado em operações dentro de uma aplicação/serviço

Scopes: permissões

####OpenID Connect

Baseado em Oauth2

  • Adiciona dois novos flows
  • Adiciona session management:
  • Single Sign ON/OUT para apps (HTML5)
  • ID Token
  • User Info end point
  • Descoberta e auto registro de clientes

###Componentes ####IdP/Auth Server

  • Base de usuários e credenciais
  • Autenticação
  • Emissão, validação e invalidação de Tokens

####SP/Resource Server

  • Expõe dados e operações que são acessadas por:
  • Usuário
  • Aplicação

####Usuários/Clientes

  • Usuário (via navegaor)
  • Aplicações
  • Serviços de Backend

Funcionalidades do Keycloak

Atuar como um Broker de Identidade facilitando ao máximo a integração com os diferentes providers e padrões

Segurança é complicado!

Não reinvente a roda!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment