Configuração do Keycloak
{
"oidc_providers": {
"keycloak": {
"display_name": "Sign in with keycloak",
"provider_url": "https://keycloak.example.com/realms/master",
"client_id": "***",
"client_secret": "***",
"redirect_url": "https://semaphore.example.com/api/auth/oidc/keycloak/redirect"
}
}
}
Papéis de projeto a partir de grupos Enterprise
Para usar os mapeamentos de grupo, adicione um mapper que coloque os grupos do usuário no token de ID:
- No Keycloak Admin Console, abra seu cliente, vá em Client scopes e abra o scope
<client-id>-dedicated. - Adicione um mapper By configuration e escolha Group Membership.
- Defina Token Claim Name como
groupse ative Add to ID token. - Escolha como enviar os grupos com Full group path. Se estiver ativado, o Keycloak envia o caminho de cada grupo, por exemplo
/devopsou/platform/sre, e o mapeamento de grupo deve usar esse caminho. Se estiver desativado, o Keycloak envia apenas o nome do grupo, por exemplosre.
Depois, defina groups_claim para o provedor:
{
"oidc_providers": {
"keycloak": {
"...": "...",
"groups_claim": "groups"
}
}
}
Não adicione groups a scopes. O Keycloak recusa um scope que não conhece, e o mapper não precisa de nenhum scope adicional.
Login iniciado pelo IdP
Para permitir que os usuários iniciem o Semaphore a partir do lançador de aplicações do Account Console do Keycloak, habilite o login iniciado pelo IdP para o provedor:
{
"oidc_providers": {
"keycloak": {
"...": "...",
"allow_idp_initiated": true
}
}
}
Em seguida, no Admin Console do Keycloak, abra o seu cliente e defina a Home URL (Keycloak ≥ 19; versões mais antigas a chamam de Base URL) como:
https://semaphore.example.com/api/auth/oidc/keycloak/initiate
Quando um usuário clica na aplicação no lançador, o Keycloak redireciona para essa URL com o parâmetro iss. O Semaphore
valida o iss em relação ao seu provider_url (o issuer do realm) e inicia um fluxo Authorization Code normal.
Issues relacionadas no GitHub
- #2308 — Como desativar a validação de certificado para o servidor Keycloak
- #2314 — Opção para desativar a verificação TLS
- #1496 — Encerrar a sessão do Keycloak ao sair do Semaphore
Explorar todas as issues relacionadas ao Keycloak →