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.

  1. Identity Provider URL: Hyperlink relativo ao realm em que o cliente foi configurado no keycloak. Exemplo: ;

  2. Client ID: Mesmo parâmetro configurado no campo “Client ID” do Keycloak;

  3. Authorization Endpoint: Parâmetro “authorization_endpoint” presente no arquivo de configurações do endpoint Open-ID no Keycloak;

  4. Response Mode: “form_post”;

  5. 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