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
###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
-
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
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!