Todos los productos
Search
Centro de documentos

Alibaba Cloud Service Mesh:Integrar Alibaba Cloud IDaaS con ASM para el inicio de sesión único

Última actualización: Sep 21, 2026

Esta guía explica cómo configurar el inicio de sesión único (SSO) para las aplicaciones en una instancia de Alibaba Cloud Service Mesh (ASM).

Requisitos previos

Contexto

Muchas aplicaciones requieren control de acceso y solo permiten la entrada a usuarios autenticados. A medida que los sistemas se vuelven más complejos, el inicio de sesión único (SSO) representa una solución eficaz. Este mecanismo permite a los usuarios iniciar sesión en varios sistemas con una sola cuenta. El servicio de autorización personalizada de ASM le permite implementar SSO en las aplicaciones de su malla sin modificar el código.

Usar ASM para implementar SSO reduce la refactorización de aplicaciones y los costos de operación y mantenimiento. Esta guía utiliza una instancia de Alibaba Cloud IDaaS como proveedor de identidades (IdP) para habilitar SSO en los servicios de la malla. En lugar de integrar la lógica de autenticación y autorización dentro de sus aplicaciones, configure ASM para usar un servicio de autorización personalizada. Este servicio se integra con Alibaba Cloud IDaaS o con cualquier IdP compatible con OIDC para gestionar el flujo de autorización e inicio de sesión. Una vez que el usuario se autentica correctamente, la solicitud y su información de identidad se reenvían a la aplicación. De este modo, la aplicación ejecuta la lógica de negocio correspondiente a esa identidad.

Conceptos

Concepto

Descripción

IdP

Un proveedor de identidades (IdP) es un servicio que crea, mantiene y gestiona identidades de usuario, además de proporcionar servicios de autenticación. Por ejemplo, cuando usa una cuenta de Google para iniciar sesión en una aplicación de terceros, Google actúa como IdP.

OIDC

OpenID Connect (OIDC) es un protocolo de autenticación construido sobre el framework OAuth 2.0. Para obtener más información, consulte OpenID Connect.

Scope

En OIDC, los scopes definen qué atributos del usuario (como el correo electrónico o la información del perfil) puede consultar una aplicación. Durante la autenticación, el IdP puede solicitar al usuario que otorgue permiso para que la aplicación acceda a scopes específicos de sus datos.

Paso 1: Crear una instancia de IDaaS y un usuario de prueba

  1. Inicie sesión en la consola de EIAM y cree una instancia de Alibaba Cloud IDaaS.

    Nota

    Una instancia de Alibaba Cloud IDaaS funciona como un sistema de cuentas autónomo. Crear una instancia equivale a establecer un sistema independiente de gestión de identidades.

  2. En la página EIAM, haga clic en el nombre de la instancia de Alibaba Cloud IDaaS.

  3. En el panel de navegación izquierdo, seleccione Account > Accounts and Orgs.

  4. En la página Account, haga clic en la pestaña Account y luego en Create User.

  5. En el panel Create User, introduzca la información del usuario y haga clic en OK.

Paso 2: Agregar y configurar una aplicación OIDC

Las aplicaciones de su instancia de Alibaba Cloud IDaaS funcionan como interfaces. La instancia de IDaaS expone estas interfaces de diversas maneras para habilitar SSO. Esta guía utiliza una aplicación OIDC para demostrar el proceso.

  1. En el panel de navegación izquierdo de la consola de EIAM, haga clic en Application Management.

  2. En la página Application Management, haga clic en Add Application.

  3. En la página Add Application, haga clic en la pestaña Standard Protocols. En la tarjeta OIDC, haga clic en Add Application.

  4. En el cuadro de diálogo Add Application-OIDC, introduzca un valor en Application Name y haga clic en Add.

  5. En la página de detalles de OIDC Application, seleccione Sign-In > SSO.

  6. En la pestaña de configuración de SSO, establezca los valores de Redirect URIs. Haga clic en Show Advanced Settings, seleccione la información de usuario que desea obtener en la sección scopes y luego haga clic en Save.

    En el panel de navegación izquierdo, haga clic en Applications. Seleccione la aplicación de destino, haga clic en la pestaña Sign-in y vaya a la subpestaña SSO. Los scopes disponibles incluyen openid, email, phone y profile.

    Nota

    En este ejemplo, el parámetro Redirect URI se establece en http://{IP_address_of_the_ingress_gateway}/oauth2/callback. Sustituya {IP_address_of_the_ingress_gateway} por la dirección IP real de su ingress gateway.

  7. En la página de detalles de OIDC Application, seleccione Sign-In > Authorize y haga clic en Authorize.

  8. En el cuadro de diálogo Authorize, otorgue permisos al usuario que creó en el paso 1 y luego haga clic en Confirm.

Después de configurar la aplicación OIDC, anote los valores de Issuer, client_id y client_secret. Necesitará esta información para configurar SSO en ASM.

  • Issuer: en su aplicación OIDC, obtenga este valor desde Sign-In > SSO > Application Settings. Issuer: obtenga este valor en la sección Application Configuration Information, ubicada en la parte inferior de la página Login Access > Single Sign-On de su aplicación OIDC. Este campo sirve para verificar el origen de la emisión del token y también representa el valor baseUrl de las URL de los endpoints.

  • client_id y client_secret: en la página de detalles de la aplicación OIDC, busque estos valores en la sección General.

Paso 3: Desplegar y exponer la aplicación de prueba

Esta guía utiliza la aplicación httpbin para las pruebas. Dicha aplicación permite inspeccionar los detalles de las solicitudes, lo cual facilita comprobar la información obtenida del IdP tras un inicio de sesión correcto.

  1. Use el siguiente archivo YAML para desplegar la aplicación httpbin en el namespace default de su clúster de ACK.

    Contenido 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 el siguiente archivo YAML para configurar un recurso Gateway en su instancia de ASM. Para obtener más información, consulte Manage Istio gateways.

    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 el siguiente archivo YAML para aplicar un servicio virtual a su instancia de ASM. Para obtener más información, consulte Manage virtual services.

    Este servicio virtual define una ruta predeterminada hacia la aplicación 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. Después de configurar el recurso Gateway y el servicio virtual, acceda al servicio httpbin mediante el comando curl -I http://{IP_address_of_the_ingress_gateway}:80.

    Salida de ejemplo:

    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

Paso 4: Habilitar la autorización personalizada y configurar SSO con OIDC

  1. Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione Service Mesh > Mesh Management.

  2. En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione Mesh Security Center > External Authorization Service. En la página que aparece, haga clic en Define External Authorization Service.

  3. En la página Define External Authorization Service, haga clic en la pestaña OIDC Authz and Authn Service, configure los parámetros y luego haga clic en Create.

    Nota

    Utilice la información de la aplicación OIDC que obtuvo en Step 2. Puede usar la dirección IP del ingress gateway como URI de redireccionamiento para los inicios de sesión. Para obtener más información sobre los secretos de cookies, consulte Generating a Cookie Secret.

  4. Use el archivo KubeConfig del clúster del plano de datos para ejecutar el siguiente comando y obtener el nombre de dominio del servicio de autorización externa OIDC.

    kubectl get svc -n istio-system|grep oauth2proxy|awk -F' ' '{print $1}'
  5. Use el siguiente archivo YAML para crear un servicio virtual que reciba las solicitudes de autenticación provenientes del ingress gateway.

    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 conflictos, no cree otros servicios virtuales que coincidan con el prefijo de ruta /oauth2.

Paso 5: Crear una política de autorización

  1. En la página de detalles de la instancia de ASM, seleccione Mesh Security Center > AuthorizationPolicy en el panel de navegación izquierdo. En la página que aparece, haga clic en Create from YAML.

  2. En la página Create, seleccione un valor en Namespaces y una opción en Scenario Template. Introduzca el siguiente contenido YAML y luego haga clic en 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 autorización se aplica a todas las solicitudes enviadas al ingress gateway.

Paso 6: Comprobar el resultado

  1. En un navegador web, vaya a http://{IP_address_of_the_ingress_gateway}:80.

    Aparece la página de inicio de sesión de OAuth2 Proxy, que contiene el botón Sign in with OpenID Connect. Esto indica que OAuth2 Proxy se desplegó e integró correctamente con OpenID Connect, y que SSO está activo.

  2. Haga clic en Sign in with OpenID Connect.

    Resultado esperado: aparece la página de inicio de sesión de Alibaba Cloud IDaaS. Dicha página incluye los campos de entrada Account name, mobile number, or email y Password, además del botón Log On. Esto confirma que la configuración de SSO con OIDC funciona adecuadamente.

  3. En la página de inicio de sesión de Alibaba Cloud IDaaS, introduzca las credenciales del usuario de prueba que creó en Step 1 y haga clic en Log On.

    Resultado esperado: después de iniciar sesión correctamente, aparece la página de documentación de la API Swagger de httpbin.org correspondiente a la versión 0.9.2. La página muestra la descripción del servicio, "A simple HTTP Request & Response Service,", y enumera grupos de API como HTTP Methods, Auth, Status codes y Request inspection. Esto confirma que la configuración de SSO con Alibaba Cloud IDaaS es válida.

  4. Haga clic en Request inspection y luego seleccione /headers > Try it out > Execute.

    Resultado esperado: después de ejecutar la solicitud, el servidor devuelve el código de estado 200 OK. El cuerpo de la respuesta incluye un campo Authorization que contiene un JWT de tipo Bearer, lo cual indica que la autorización mediante JWT funciona adecuadamente.

    {
      "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 el JWT del token Bearer obtenido en el paso anterior y analícelo sintácticamente con un depurador de JWT.

    Para obtener más información, consulte JWT.io.

    Resultado esperado: el análisis sintáctico del JWT muestra que el valor de alg en HEADER es RS256. PAYLOAD contiene claims estándar del ID Token de OIDC, tales como sub, jti, iss (que corresponde al endpoint OIDC de su instancia de EIAM), iat, nbf, exp, aud, at_hash, c_hash, email, email_verified, phone_number, phone_number_verified, name, preferred_username y updated_at. Esto confirma que el JWT contiene la información del usuario proveniente de Alibaba Cloud IDaaS y que ASM lo validó correctamente.