O OpenID Connect (OIDC) é um protocolo de autenticação e autorização de identidade baseado no OAuth 2.0, usado principalmente para logon único (SSO). Ao configurar o logon único OIDC em um gateway ASM, você utiliza um provedor de identidade como o Alibaba Cloud IDaaS ou qualquer outro serviço compatível com OIDC. Isso permite que os usuários façam login uma única vez e acessem várias aplicações sem modificá-las. Essa abordagem aumenta a segurança e simplifica o desenvolvimento e a gestão das aplicações.
Pré-requisitos
Uma aplicação implantada no cluster adicionado à instância ASM.
A injeção de sidecar está ativada para o namespace. Para mais informações, consulte Configurar políticas de injeção de sidecar.
Um gateway de entrada ASM criado e seu endereço obtido. Para mais informações, consulte Criar um gateway de entrada e Obter o endereço de um gateway de entrada.
-
Um provedor de identidade (IdP) configurado. Para mais informações, consulte Integrar o ASM ao Alibaba Cloud IDaaS para habilitar o logon único nas aplicações da malha na Etapa 1 e na Etapa 2.
Após configurar o IdP, obtenha as seguintes informações para usar na Etapa 5.
redirect uri: http://${gateway address}/oauth2/callback issuer: https://eiam-api-cn-hangzhou.aliyuncs.com/v2/idaas_tbn25osdlmz6gtqfq3j2pz****/app_ml5tzapsl7zmfo53wb3nwk****/oidc client id: ******** client secret: *********
Procedimento
Este tópico usa o Alibaba Cloud IDaaS como exemplo de IdP. Caso utilize um serviço OIDC autogerenciado, consulte Integrar o Keycloak ao ASM para implementar o logon único nas aplicações da malha.
Faça login no console ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância ASM. No painel de navegação à esquerda, escolha .
Na página Ingress Gateway, clique em nome do gateway desejado.
No painel de navegação à esquerda da página de visão geral do gateway, escolha .
-
No assistente de OIDC Config, ative a chave Enable gateway OIDC Single Sign-On, configure os parâmetros e clique em Next.
Parâmetro
Descrição
Redirect address
Neste exemplo, as opções Use ingressgateway IP address e protocolo http estão selecionadas.
Callback Address
URL de redirecionamento.
OIDC Issuer URL
URL que identifica e valida o provedor OpenID Connect.
Client ID
ID do cliente fornecido pelo emissor.
Client Secret
Segredo do cliente fornecido pelo emissor.
Cookie Secret
Semente usada para gerar cookies seguros (suporta codificação Base64).
Cookie Expire
Tempo de vida do cookie. O valor 0 indica que a sessão do cookie nunca expira.
Cookie refresh interval
Intervalo de atualização do cookie. Defina este parâmetro como 0 para desativar a atualização.
Scopes
Escopos a serem solicitados. Os escopos especificados devem ter suporte do emissor.
Ative a chave Enable gateway OIDC Single Sign-On e configure os parâmetros conforme descrito na tabela. Defina Cookie Expire como
3600s, Cookie refresh interval como60s e selecione openid para Scopes. -
No assistente de Matching Rules, configure os parâmetros e clique em Submit.
Parâmetro
Descrição
Match Mode
Neste exemplo, a opção Auth If Matched está selecionada. A lista a seguir descreve as opções disponíveis.
-
Auth If Matched: As requisições selecionadas exigem autenticação.
-
Bypass Auth If Matched: As requisições selecionadas podem ignorar a autenticação.
Add Match Rule
Ative a chave Path e defina o valor como /productpage. Essa configuração exige que as requisições para o caminho /productpage sejam autenticadas via OIDC.
Após criar a configuração, o assistente Complete exibe uma mensagem de sucesso e os recursos de segurança do Service Mesh gerados. Clique em View YAML para visualizar os detalhes do recurso.
-
-
Em um navegador, acesse http://${ASM gateway address}/productpage para verificar se a configuração de logon único OIDC funciona corretamente.
Substitua ${ASM gateway address} pelo endereço do seu gateway de entrada. Você será redirecionado para a página de login do Alibaba Cloud IDaaS. Esse redirecionamento confirma que a configuração de logon único OIDC está efetiva. Na página de login, insira seu Username, mobile number, or email e Password, e clique em Log In. Após o login, você poderá acessar a página.
FAQ
Comportamento da aplicação com OIDC no gateway
Ao ativar o OIDC no gateway, sua aplicação não precisa lidar com nenhuma lógica relacionada à autenticação ou autorização do IdP. Um cabeçalho com a chave Authorization é adicionado à requisição quando ela passa pelo gateway. Esse cabeçalho contém um JSON Web Token (JWT) do IdP. O payload do JWT inclui as informações necessárias do usuário e já foi validado pelo gateway, portanto, sua aplicação não precisa validá-lo novamente. Sua aplicação pode analisar esse cabeçalho da requisição para obter as informações do usuário.
Significado do cookie de sessão OIDC
Não. O cookie registra o estado da sessão no gateway e não tem relação com a aplicação. Sua aplicação só precisa analisar o JWT presente no cabeçalho da requisição.
Obtenção de informações estendidas do IdP
Esse processo é específico para o seu provedor de identidade. Para o Alibaba Cloud IDaaS, consulte Gerenciar campos de conta.
Encerramento de uma sessão
O logout envolve duas etapas:
Saia da sessão do IdP usando o método fornecido por ele. Geralmente, um IdP oferece uma URI de logout que você pode chamar para encerrar a sessão.
Limpe o cookie de sessão definido pelo gateway no cliente. Faça isso chamando o caminho
/oauth2/sign_out, que faz o gateway limpar automaticamente o cookie correspondente.
A partir da versão v1.18.147 do ASM, é possível configurar o endpoint de logout do IdP diretamente no gateway. Especifique o endpoint na página de configuração OIDC e defina a regra para ignorar a autenticação no caminho /oauth2/sign_out. Após concluir a configuração, acessar /oauth2/sign_out em um navegador limpa o cookie e redireciona você para o endpoint de logout configurado. Para mais informações sobre como fazer logout no Alibaba Cloud IDaaS, consulte Single Logout (SLO).
Documentos relacionados
Para mais informações sobre configurações de aplicações OIDC, como acesso à API, rotação de chaves, tipos de concessão OIDC suportados pelo IDaaS e configurações nos lados do IDaaS e da aplicação, consulte Configurações básicas, Configurar SSO, Configurar SSO OIDC e Regras de valores estendidos do campo id_token OIDC.
Após fazer login em uma aplicação usando o logon único do IDaaS, inicie um logout global a partir da aplicação para encerrar a sessão principal de login do IDaaS. Para mais informações, consulte Single Logout (SLO).