Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Integrar Alibaba Cloud IDaaS com ASM para single sign-on

Última atualização: Jun 28, 2026

Este guia explica como configurar o single sign-on (SSO) para aplicações em uma instância do Alibaba Cloud Service Mesh (ASM).

Pré-requisitos

Informações de contexto

Muitas aplicações exigem controle de acesso e permitem a entrada apenas de usuários autenticados. Com a crescente complexidade dos sistemas, o single sign-on (SSO) tornou-se uma solução eficaz para permitir que os usuários façam login em vários sistemas com uma única conta. O Serviço de Autorização Personalizada no ASM possibilita implementar SSO nas aplicações do mesh sem alterar o código.

Utilizar o ASM para implementar SSO reduz a refatoração de aplicações e os custos de operações e manutenção. Este guia utiliza uma instância do Alibaba Cloud IDaaS como provedor de identidade (IdP) para habilitar o SSO nos serviços do mesh. Em vez de incorporar lógica de autenticação e autorização diretamente nas aplicações, configure o ASM para usar um serviço de autorização personalizada. Esse serviço integra-se ao Alibaba Cloud IDaaS ou a qualquer IdP compatível com OIDC para gerenciar o fluxo de autorização e login. Após a autenticação bem-sucedida, a solicitação e as informações de identidade do usuário são encaminhadas à aplicação, que executa a lógica de negócios com base nessa identidade.

Conceitos

Conceito

Descrição

IdP

Um provedor de identidade (IdP) é um serviço que cria, mantém e gerencia identidades de usuários, além de fornecer serviços de autenticação. Por exemplo, ao usar uma conta do Google para entrar em uma aplicação de terceiros, o Google atua como o IdP.

OIDC

OpenID Connect (OIDC) é um protocolo de autenticação construído sobre o framework OAuth 2.0. Para mais informações, consulte OpenID Connect.

Scope

No OIDC, os scopes definem quais atributos do usuário (como e-mail e informações de perfil) a aplicação tem permissão para acessar. Durante a autenticação, o IdP pode solicitar que o usuário conceda permissão para a aplicação acessar scopes específicos de seus dados.

Etapa 1: Criar uma instância do IDaaS e um usuário de teste

  1. Faça login no console do EIAM e crie uma instância do Alibaba Cloud IDaaS.

    Nota

    Uma instância do Alibaba Cloud IDaaS funciona como um sistema de contas autônomo. Criar uma instância equivale a criar um sistema independente de gerenciamento de identidades.

  2. Na página EIAM, clique em no nome da instância do Alibaba Cloud IDaaS.

  3. No painel de navegação à esquerda, escolha Account > Accounts and Orgs.

  4. Na página Account, clique em na aba Account e, em seguida, clique em Create User.

  5. No painel Create User, insira as informações do usuário e clique em OK.

Etapa 2: Adicionar e configurar uma aplicação OIDC

As aplicações na sua instância do Alibaba Cloud IDaaS funcionam como interfaces. A instância do IDaaS pode expor essas interfaces de várias formas para habilitar o SSO. Este guia utiliza uma aplicação OIDC para demonstrar o processo.

  1. No painel de navegação à esquerda do console do EIAM, clique em Application Management.

  2. Na página Application Management, clique em Add Application.

  3. Na página Add Application, clique em na aba Standard Protocols. No cartão OIDC, clique em Add Application.

  4. Na caixa de diálogo Add Application-OIDC, insira um Application Name e clique em Add.

  5. Na página de detalhes da OIDC Application, selecione Sign-In > SSO.

  6. Na aba de configuração de SSO, defina os Redirect URIs. Clique em Show Advanced Settings, selecione as informações de usuário a serem obtidas na seção scopes e clique em Save.

    No painel de navegação à esquerda, clique em Applications. Selecione a aplicação desejada, clique em na aba Sign-in e acesse a subaba SSO. Os scopes disponíveis incluem openid, email, phone e profile.

    Nota

    Neste exemplo, o Redirect URI está definido como http://{IP_address_of_the_ingress_gateway}/oauth2/callback. Substitua {IP_address_of_the_ingress_gateway} pelo endereço IP real do seu gateway de entrada.

  7. Na página de detalhes da OIDC Application, selecione Sign-In > Authorize e clique em Authorize.

  8. Na caixa de diálogo Authorize, conceda permissões ao usuário criado na Etapa 1 e clique em Confirm.

Após configurar a aplicação OIDC, anote o Issuer, o client_id e o client_secret. Essas informações serão necessárias para configurar o SSO no ASM.

  • Issuer: Na sua aplicação OIDC, obtenha este valor em Sign-In > SSO > Application Settings. Issuer: Obtenha este valor na seção Application Configuration Information, na parte inferior da página Login Access > Single Sign-On da sua aplicação OIDC. Este campo serve para verificar a origem da emissão do token e também representa o baseUrl para as URLs dos endpoints.

  • client_id e client_secret: Na página de detalhes da aplicação OIDC, encontre esses valores na seção General.

Etapa 3: Implantar e expor a aplicação de teste

Este guia utiliza a aplicação httpbin para testes. Essa aplicação ajuda a inspecionar detalhes das solicitações, o que simplifica a verificação das informações obtidas do IdP após um login bem-sucedido.

  1. Use o YAML a seguir para implantar a aplicação httpbin no namespace default do seu cluster ACK.

    Conteúdo YAML

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: httpbin
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: httpbin
      labels:
        app: httpbin
        service: httpbin
    spec:
      ports:
      - name: http
        port: 8000
        targetPort: 80
      selector:
        app: httpbin
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: httpbin
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: httpbin
          version: v1
      template:
        metadata:
          labels:
            app: httpbin
            version: v1
        spec:
          serviceAccountName: httpbin
          containers:
          - image: docker.io/kennethreitz/httpbin
            imagePullPolicy: IfNotPresent
            name: httpbin
            ports:
            - containerPort: 80
  2. Use o YAML a seguir para configurar um recurso Gateway para sua instância do ASM. Para mais informações, consulte Gerenciar gateways do Istio.

    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name: ingressgateway
      namespace: istio-system
    spec:
      selector:
        app: istio-ingressgateway
      servers:
        - hosts:
            - '*'
          port:
            name: http
            number: 80
            protocol: HTTP
  3. Use o YAML a seguir para aplicar um serviço virtual à sua instância do ASM. Para mais informações, consulte Gerenciar serviços virtuais.

    Este serviço virtual define uma rota padrão para a aplicação httpbin.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: ingressgateway-vs
      namespace: istio-system
    spec:
      gateways:
        - ingressgateway
      hosts:
        - '*'
      http:
        - name: default
          route:
            - destination:
                host: httpbin.default.svc.cluster.local
                port:
                  number: 8000
  4. Após configurar o Gateway e o serviço virtual, acesse o serviço httpbin executando o comando curl -I http://{IP_address_of_the_ingress_gateway}:80.

    Saída de exemplo:

    curl -I http://{IP_address_of_the_ingress_gateway}:80
    HTTP/1.1 200 OK
    server: istio-envoy
    date: Fri, 19 Aug 2022 07:39:58 GMT
    content-type: text/html; charset=utf-8
    content-length: 9593
    access-control-allow-origin: *
    access-control-allow-credentials: true
    x-envoy-upstream-service-time: 3

Etapa 4: Ativar autorização personalizada e configurar SSO OIDC

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em no nome da instância do ASM. No painel de navegação à esquerda, escolha Mesh Security Center > Custom Authorization Service. Na página exibida, clique em Define Custom Authorization Service.

  3. Na página Define External Authorization Service, clique em na aba OIDC Authz and Authn Service, configure os parâmetros e clique em Create.

    Nota

    Utilize as informações da aplicação OIDC obtidas na Etapa 2. Use o endereço IP do gateway de entrada como URI de redirecionamento para logins. Para mais informações sobre secrets de cookie, consulte Generating a Cookie Secret.

  4. Use o KubeConfig do cluster do plano de dados para executar o seguinte comando e obter o nome de domínio do serviço de autorização externa OIDC.

    kubectl get svc -n istio-system|grep oauth2proxy|awk -F' ' '{print $1}'
  5. Use o YAML a seguir para criar um serviço virtual que receba solicitações de autenticação do gateway de entrada.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: oauth2-vs
      namespace: istio-system
    spec:
      gateways:
        - ingressgateway
      hosts:
        - '*'
      http:
        - match:
            - uri:
                prefix: /oauth2
          name: oauth2
          route:
            - destination:
                host: # The domain name of the external authorization service obtained in the previous step.
                port:
                  number: 4180
    Importante

    Para evitar conflitos, não crie outros serviços virtuais que correspondam ao prefixo de caminho /oauth2.

Etapa 5: Criar uma política de autorização

  1. Na página de detalhes da instância do ASM, escolha Mesh Security Center > AuthorizationPolicy no painel de navegação à esquerda. Na página exibida, clique em Create from YAML.

  2. Na página Create, selecione um Namespaces e um Scenario Template. Insira o YAML a seguir e clique em Create.

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      name: oidc
      namespace: istio-system
    spec:
      action: CUSTOM
      provider:
        name: httpextauth-oidc  # The name of the custom authorization service created in the previous step.
      rules:
        - {}
      selector:
        matchLabels:
          istio: ingressgateway
    Nota

    Esta política de autorização aplica-se a todas as solicitações enviadas ao gateway de entrada.

Etapa 6: Verificar o resultado

  1. Em um navegador web, acesse http://{IP_address_of_the_ingress_gateway}:80.

    A página de login do OAuth2 Proxy aparece, contendo um botão Sign in with OpenID Connect. Isso indica que o OAuth2 Proxy foi implantado e integrado com sucesso ao OpenID Connect, e que o SSO está ativo.

  2. Clique em Sign in with OpenID Connect.

    Resultado esperado: A página de login do Alibaba Cloud IDaaS aparece. A página contém campos de entrada para Account name, mobile number, or email e Password, além de um botão Log On. Isso confirma que a configuração de SSO OIDC está funcionando.

  3. Na página de login do Alibaba Cloud IDaaS, insira as credenciais do usuário de teste criado na Etapa 1 e clique em Log On.

    Resultado esperado: Após fazer login com sucesso, a página de documentação da API Swagger do httpbin.org aparece na versão 0.9.2. A página exibe a descrição do serviço, "A simple HTTP Request & Response Service," e lista grupos de APIs como HTTP Methods, Auth, Status codes e Request inspection. Isso confirma que a configuração de SSO do Alibaba Cloud IDaaS é válida.

  4. Clique em Request inspection, depois escolha /headers > Try it out > Execute.

    Resultado esperado: Após executar a solicitação, o servidor retorna um código de status 200 OK. O corpo da resposta inclui um campo Authorization que contém um JWT Bearer, indicando que a autorização JWT está funcionando.

    {
      "headers": {
        "Accept": "application/json",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.9",
        "Authorization": "Bearer eyJraWQiOiJLRVkxM3d0ekhLSmdEbkFmd1lQR0RqemM5RFUzTkwSNXd1S0wiLC3hbGciOiJSUzI1NiJ9.eyJzdWIiOiJlc2VyVyX29xemw3Z3FQb2lrb2xtNG9xY29mMndlcGhtIiwinRpi-joiand0X2FhYWFkYXZ2aG12Y2JpdDRnbDVsNGNudDR5d2FwZDI3cnFkd2Z0eDI3cnFkZTByc2FtcnFkd2Z0ZDI3cnFkZTByc2FtIixxx.xxxb51hcGktY24taGFuZ3pobxxx.xxxMuY29xxx.3yiL2xxx.Fx3R1bjI1b3NkbG16Nmd0cWZxM2oycHpwZWZx-L2FwcF9tbDV0emFwc2w3em1mbzUzd2xxx.xxxaGFzaCI6IkUxcm9oRnlpR2FZYmJnTS.xxxtudHZpIiwiYXRf-IrODYgMTg2IDkxNzEgMjQ5MS.xxx.xxx.BanFbeM28p\nYp-aiEymtvy-QC-6VjohuSSi.xxx\nE9c3RTMntC66D7fxTGME2x.xxx.Et\nrwPRUTM-2AF74y2NVFtpNdkxbLenyz1duwTpeGANmgLGxxxJrZvKyNxBjAV6TZjGrUVVNICbU1_sg",
        "...": "..."
      }
    }
  5. Copie o JWT do token Bearer da etapa anterior e analise-o com um depurador de JWT.

    Para mais informações, consulte JWT.io.

    Resultado esperado: O JWT analisado mostra que o alg no HEADER é RS256. O PAYLOAD contém claims padrão do ID Token OIDC, como sub, jti, iss (que é o endpoint OIDC da sua instância EIAM), iat, nbf, exp, aud, at_hash, c_hash, email, email_verified, phone_number, phone_number_verified, name, preferred_username e updated_at. Isso confirma que o JWT contém as informações do usuário do Alibaba Cloud IDaaS e que o ASM o validou com sucesso.