Nesse artigo vamos mostrar como configurar um provedor de Federação de usuários no Keycloak na versão 22.0.3, em nosso caso vamos configurar o LDAP ,Lightweight Directory Access Protocol, com um servidor AD,active directory, porém com pquenas alterações o guia também pode ser utilizado com Red Hat Directory Server, Tivoli, Novll eDirectory entre outros. O mesmo se aplica a versão do Keycloak que a depender da sua versão, um campo ou outro pode mudar a posição, mas em essência o guia deve servir.
Sumário
- Pré Requisitos
- Adicionando uma nova Federação de usuários
- Criando uma nova conexão com LDAP
- Mapeando os campos do AD para o Keycloak
- Fazeendo Login no Keeycloak com integração com LDAP
- Conclussão
Pré Requisitos
Para esse guia você precisa ter uma instalação do Keycloak, um Realm e Cliente público configurado, caso tenha dúvidas em como criar um Realm e Cliente veja esse artigo que mostramos como. Além disso são necessários os seguintes itens:
- URL de conexão do LDAP ex: ldap://localhost
- Tipo de autenticação
- Se tiver autenticação CN,OU,DC do usuario Administrador do LDAP além de sua senha
- Modo de edição
- Ponto de início para procuras no servidor do diretório LDAP
- Campos que vão ser usados como atributos de nome completo, username, email e afins
- Objetos do usuário
- Profundidade da busca
Adicionando uma nova Federação de usuários
Uma vez logado no keycloak, selecione ou crie um realm, veja nosso artigo caso queira criar um, e na aba configurações acesse federações de usuários, conforme imagem abaixo:
Caso queira também pode acessar a URL para versões recentes do keycloak:
https://localhost:8080/admin/SEU_REALM/console/#/master/user-federation
BashPara nosso exemplo vamos selecionar o provedor como “active directory”. Escolha o mais próximo do seu provedor LDAP:
Na sequência devemos informar a url de conexão que deve seguir o seguinte padrão: protocolo + Ip ou domínio + porta caso tenha um exemplo seria ldap://localhost:123 ou ldap://localhost caso a porta seja a padrão (389) devemos também marcar ou não se nosso servidor ldap usa STARTTLS como protocolo de segurança. Em nosso exemplo vamos deixar desmarcado, por fim podemos selecionar a opção “testar conexão” onde esperamos uma mensagem “Successfully connected to LDAP”.
Caso não, verifique as configurações acima e tente novamente, no caso de sucesso podemos seguir para a forma de autenticação.
Selecionando o tipo de autenticação
Devemos setar o “Bind DN” que pode ser nos dois formatos login@dominio ou através de conta e diretórios onde deve logar, segue os dois exemplos:
- CN=administrador,OU=grupo CodeInLoop,DC=codeinloop,DC=com,DC=br
- administrador@codeinloop.com.br
Devemos então fornecer a senha dessa conta e testar a autenticação onde novamente devemos ver uma imagem igual a de cima, nesse ponto já podemos seguir para o mapeamento de campos.
Mapeando os campos do AD para o Keycloak
Esse é um dos passos mais importantes durante a configuração pois é nele que vamos explicar para o Keycloak como ele deve fazer a correção de campos dele com a do seu servidor LDAP. Caso não tenha certeza de quais atributos usar você pode consultar esses links da Microsoft atributos Active Directory ou Atributos de nomenclatura de usuário. Para esse tutorial vamos explicar o que usamos.
Keycloak | LDAP | Resultado |
Modo de edição | UNSYNCED | READ_ONLY é um LDAP somente leitura. WRITABLE significa que os dados serão sicronizados de volta para o LDAP por demanda. UNSYNCED significa que os dados do usuário serão importados, mas não sicronizados de volta para o LDAP. |
Atributo LDAP para Username | sAMAccountName | O atributo sAMAccountName é um nome de logon (ex: admin) |
Atributo LDAP para UUID | objectGUID | objectGUID é o identificador exclusivo de um usuário. O atributo é um GUID (Identificador Global exclusivo) |
Email do usuario | ||
firstName | givenname | Primeiro nome |
lastName | sn | Ultimo nome |
username | sAMAccountName | O atributo sAMAccountName é um nome de logon (ex: admin) |
Caso queira adicionar mais campos basta selecionar a opção, lembre-se apenas de adicionar o Objeto que tem os atributos que deseja adicionar, para nosso exemplo usamos: person, organizationalPerson, user
Fazendo Login no Keycloak com integração com LDAP
Uma vez com o keycloak configurado e habilitado podemos acessar essa url:
https://localhost:8080/realms/SEU_REALM/account/#/security/signingin
BashCaso receba erros como:
- No users found, could be due to wrongly configured federated provider Unexpected non-whitespace character after JSON at position 2
- Unexpected error when handling authentication request to identity provider.
Isso indica algum erro durante a configuração do seu ldap que pode ter relação mas não exclusivamente em como os campos foram mapeados e nesse caso apenas revisando sua configuração.
Conclusão
Seu LDAP já está configurado e pronto para uso, caso tenha algum erro durante a configuração não deixe de comentar, dessa forma podemos melhorar nosso artigo incluindo soluções para os erros.