Federação de Usuários com Keycloak (OpenID)
V1.0 – Outubro 2024
Versão | Autor | Descrição |
---|---|---|
V1.0 – 2024-10-15 | Diogo Hatz d50037923 | Versão Inicial |
V1.0 – 2024-10-15 | Wisley da Silva Paulo 00830850 | Revisão do Documento |
Objetivo
Este documento objetiva apresentar os procedimentos necessários para a efetivação da configuração de federação de identidade na Huawei Cloud (Service Provider) através de um provedor de identidade (IdP), como o RedHat SSO ou Keycloak. Neste exemplo, o protocolo utilizado para a federação de identidade será o OpenID, mapeando os usuários do provedor de identidade para usuários virtuais na Huawei Cloud.
No diagrama abaixo, é possível visualizar o fluxo do processo de autenticação na Huawei Cloud utilizando um IdP.
Keycloak
Primeiramente, faz-se necessário realizar a configuração do provedor de identidade (IdP). Para isso, acesse a página de configurações do IdP (Keycloak) e navegue até a seção “Clients”. Clique em “Create” para criar um novo cliente.
Selecione o “Client Protocol” como sendo “openid-connect” e insira “hws-oidc” no campo relativo ao “Client ID”. Feito isso, clique em “Save” para efetivar a criação do client.
Navegue até o cliente da Huawei Cloud criado e clique em “Edit” para editar as configurações do cliente.
Habilite a opção “Implicit Flow Enabled”, altere o campo “Access Type” para “confidential” e insira o seguinte hyperlink no campo de “Valid Redirect URIs”: https://auth.huaweicloud.com/authui/oidc/post. Feito isso, clique em “Save” para salvar as modificações feitas.
Navegue até a seção de “Mappers”, ainda nas configurações do cliente da Huawei Cloud, e clique em “Create” para criar um mapper para o username.
Selecione o “Mapper Type” como de tipo “User Property” e preencha os demais campos conforme a imagem abaixo.
Navegue mais uma vez até a seção de “Mappers”, ainda nas configurações do cliente da Huawei Cloud, e clique em “Create” para criar um mapper para o group.
Selecione o “Mapper Type” como de tipo “Group Membership”, desabilite a opção “Full group path” e preencha os demais campos conforme a imagem abaixo.
Para realizar a federação de usuários da Huawei Cloud, faz-se necessária a existência de usuários primeiramente. Caso não exista nenhum usuário criado no Keycloak, crie um usuário.
Navegue até a seção de “Realm Settings” e clique em “OpenID Endpoint Configuration”, na subseção de “Endpoints”.
Tome nota dos seguintes parâmetros, que precisarão ser configurados no lado do service provider (Huawei Cloud): “authorization_endpoint” e “jwks_uri”.
No web browser, navegue até o hyperlink relativo ao parâmetro “jwks_uri” copiado acima e tome nota da chave.
IAM
Acesse o serviço IAM no console da Huawei Cloud e navegue até a seção “Identity Providers”. Clique em “Create Identity Provider” para criar uma configuração de federação de identidade.
Selecione o protocolo OpenID-Connect e o “SSO Type” como “Virtual User”. Clique no botão “OK” para salvar as configurações da criação da IdP.
Feito isso, selecione a opção “Modify” ao lado do provedor de identidade criado e preencha os campos conforme mostrado na figura abaixo.
-
Identity Provider URL: Hyperlink relativo ao realm em que o cliente foi configurado no keycloak. Exemplo: ;
-
Client ID: Mesmo parâmetro configurado no campo “Client ID” do Keycloak;
-
Authorization Endpoint: Parâmetro “authorization_endpoint” presente no arquivo de configurações do endpoint Open-ID no Keycloak;
-
Response Mode: “form_post”;
-
Signing Key: Conteúdo do parâmetro “jwks_uri”, presente no arquivo de configurações do endpoint Open-ID no Keycloak.
Importante: O protocolo Open-ID requer, necessariamente, que um certificado SSL seja configurado no provedor de identidade para possibilitar comunicação via protocolo HTTPS. O certificado SSL pode ser um certificado auto assinado.
Por fim, na seção de “Identity Conversion Rules”, clique em “Create Rule” para criar uma regra de conversão de usuários e grupos do IdP para os usuários e grupos correspondentes na Huawei Cloud. É possível utilizar o exemplo de regra de conversão abaixo.
Importante: A regra de conversão abaixo mapeia todos os usuários do Keycloak para os grupos do IAM na Huawei Cloud que possuam os mesmos nomes dos grupos configurados no Keycloak. Por exemplo: No Keycloak, o usuário “Teste” pertencente ao grupo “admin” será mapeado, na Huawei Cloud, para o usuário virtual “Teste” no grupo “admin”. Não é necessário que o usuário “Teste” seja previamente criado na Huawei Cloud. No entanto, é obrigatório que o grupo “admin” seja criado previamente na Huawei Cloud com as devidas políticas de controle de acesso.
[
{
"remote": [
{
"type": "username"
},
{
"type": "Group"
}
],
"local": [
{
"user": {
"name": "{0}"
}
},
{
"group": {
"name": "{1}"
}
}
]
}
]
Feito isso, clique em “OK” para salvar as modificações feitas no IdP.
Exemplo
A seguir segue um exemplo de validação do login no console da Huawei Cloud por meio da federação de identidade.
Acessando o console da Huawei Cloud e selecionando a opção de login por meio de usuário federado.
Inserindo o nome da conta e selecionando a IdP configurada no dropdown.
Realizando o login na provedora de identidade configurada.
Autenticação realizada com sucesso, redirecionando para o console da Huawei Cloud.
Importante: Também é possível realizar o login no console através da federação de identidade por meio do hyperlink gerado na configuração de Identity Provider no console da Huawei Cloud.
Referências
-
Documentação do IAM: https://support.huaweicloud.com/intl/en-us/usermanual-iam/iam_08_0002.html
-
Blog da Huawei Cloud: https://bbs.huaweicloud.com/blogs/401343