Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:Intégrer Alibaba Cloud IDaaS à ASM pour la connexion unique

Dernière mise à jour :Aug 11, 2026

Ce guide explique comment configurer la connexion unique (SSO) pour les applications au sein d'une instance Alibaba Cloud Service Mesh (ASM).

Prérequis

Contexte

De nombreuses applications nécessitent un contrôle d'accès, en accordant l'accès uniquement aux utilisateurs authentifiés. À mesure que les systèmes se complexifient, la connexion unique (SSO) constitue une solution efficace permettant aux utilisateurs de se connecter à plusieurs systèmes avec un seul compte. Le service Custom Authorization Service d'ASM vous permet de mettre en œuvre le SSO pour vos applications maillées sans modifier le code.

L'utilisation d'ASM pour implémenter le SSO permet de réduire les coûts de refactoring des applications et d'exploitation et maintenance (O&M). Ce guide utilise une instance Alibaba Cloud IDaaS comme fournisseur d'identité (IdP) pour activer le SSO pour les services au sein du maillage. Au lieu d'intégrer la logique d'authentification et d'autorisation dans vos applications, vous pouvez configurer ASM afin qu'il utilise un service d'autorisation personnalisé. Ce service s'intègre à Alibaba Cloud IDaaS ou à tout IdP conforme à OIDC pour gérer le flux d'autorisation et de connexion. Une fois qu'un utilisateur est authentifié avec succès, la requête et les informations d'identité de l'utilisateur sont transférées à l'application, qui peut alors exécuter la logique métier en fonction de cette identité.

Concepts

Concept

Description

IdP

Un fournisseur d'identité (IdP) est un service qui crée, maintient et gère les identités des utilisateurs, et fournit des services d'authentification. Par exemple, lorsque vous utilisez un compte Google pour vous connecter à une application tierce, Google agit en tant qu'IdP.

OIDC

OpenID Connect (OIDC) est un protocole d'authentification construit sur le framework OAuth 2.0. Pour plus d'informations, consultez la page OpenID Connect.

Scope

Dans OIDC, les scopes spécifient les attributs utilisateur (tels que l'e-mail et les informations de profil) auxquels une application est autorisée à accéder. Lors de l'authentification, l'IdP peut demander à l'utilisateur d'accorder l'autorisation à l'application d'accéder à certains scopes de ses données utilisateur.

Étape 1 : Créer une instance IDaaS et un utilisateur de test

  1. Connectez-vous à la console EIAM et créez une instance Alibaba Cloud IDaaS.

    Remarque

    Une instance Alibaba Cloud IDaaS agit comme un système de comptes autonome. La création d'une instance équivaut à la création d'un système indépendant de gestion des identités.

  2. Sur la page EIAM, cliquez sur le nom de l'instance Alibaba Cloud IDaaS.

  3. Dans le volet de navigation de gauche, sélectionnez Account > Accounts and Orgs.

  4. Sur la page Account, cliquez sur l'onglet Account, puis cliquez sur Create User.

  5. Dans le panneau Create User, saisissez les informations de l'utilisateur et cliquez sur OK.

Étape 2 : Ajouter et configurer une application OIDC

Les applications de votre instance Alibaba Cloud IDaaS agissent comme des interfaces. L'instance IDaaS peut exposer ces interfaces de différentes manières pour permettre le SSO. Ce guide utilise une application OIDC pour illustrer le processus.

  1. Dans le volet de navigation de gauche de la console EIAM, cliquez sur Application Management.

  2. Sur la page Application Management, cliquez sur Add Application.

  3. Sur la page Add Application, cliquez sur l'onglet Standard Protocols. Dans la carte OIDC, cliquez sur Add Application.

  4. Dans la boîte de dialogue Add Application-OIDC, saisissez un Application Name et cliquez sur Add.

  5. Sur la page de détails OIDC Application, sélectionnez Sign-In > SSO.

  6. Dans l'onglet de configuration SSO, définissez les Redirect URIs. Cliquez sur Show Advanced Settings, sélectionnez les informations utilisateur à obtenir dans la section scopes, puis cliquez sur Save.

    Dans le volet de navigation de gauche, cliquez sur Applications. Sélectionnez votre application cible, cliquez sur l'onglet Sign-in, puis accédez au sous-onglet SSO. Les scopes disponibles incluent openid, email, phone et profile.

    Remarque

    Dans cet exemple, l'URI de redirection Redirect URI est définie sur http://{IP_address_of_the_ingress_gateway}/oauth2/callback. Remplacez {IP_address_of_the_ingress_gateway} par l'adresse IP réelle de votre passerelle d'entrée.

  7. Sur la page de détails OIDC Application, sélectionnez Sign-In > Authorize, puis cliquez sur Authorize.

  8. Dans la boîte de dialogue Authorize, accordez des permissions à l'utilisateur que vous avez créé à l'étape 1, puis cliquez sur Confirm.

Après avoir configuré l'application OIDC, notez les valeurs Issuer, client_id et client_secret. Vous aurez besoin de ces informations pour configurer le SSO dans ASM.

  • Issuer : Dans votre application OIDC, vous pouvez obtenir cette valeur via Sign-In > SSO > Application Settings. Issuer : Obtenez cette valeur depuis la section Application Configuration Information en bas de la page Login Access > Single Sign-On de votre application OIDC. Ce champ est utilisé pour vérifier la source de l'émission des jetons et correspond également à l'URL de base baseUrl des URLs des endpoints.

  • client_id et client_secret : Sur la page de détails de l'application OIDC, trouvez ces valeurs dans la section General.

Étape 3 : Déployer et exposer l'application de test

Ce guide utilise l'application httpbin pour les tests. Cette application permet d'inspecter les détails des requêtes, ce qui simplifie la vérification des informations obtenues auprès de l'IdP après une connexion réussie.

  1. Utilisez le fichier YAML suivant pour déployer l'application httpbin dans le namespace default de votre cluster ACK.

    Contenu 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. Utilisez le fichier YAML suivant pour configurer une ressource Gateway pour votre instance ASM. Pour plus d'informations, consultez la rubrique Gérer les passerelles 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. Utilisez le fichier YAML suivant pour appliquer un virtual service à votre instance ASM. Pour plus d'informations, consultez la rubrique Gérer les virtual services.

    Ce virtual service définit une route par défaut vers l'application 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. Après avoir configuré la Gateway et le virtual service, vous pouvez accéder au service httpbin en exécutant la commande curl -I http://{IP_address_of_the_ingress_gateway}:80.

    Exemple de sortie :

    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

Étape 4 : Activer l'autorisation personnalisée et configurer le SSO OIDC

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez Service Mesh > Mesh Management.

  2. Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez Mesh Security Center > Custom Authorization Service. Sur la page qui s'affiche, cliquez sur Define Custom Authorization Service.

  3. Sur la page Define External Authorization Service, cliquez sur l'onglet OIDC Authz and Authn Service, configurez les paramètres, puis cliquez sur Create.

    Remarque

    Utilisez les informations de l'application OIDC que vous avez obtenues à l'étape 2. Vous pouvez utiliser l'adresse IP de la passerelle d'entrée comme URI de redirection pour les connexions. Pour plus d'informations sur les secrets de cookie, consultez la page Generating a Cookie Secret.

  4. Utilisez le KubeConfig du cluster du plan de données pour exécuter la commande suivante afin d'obtenir le nom de domaine du service d'autorisation externe OIDC.

    kubectl get svc -n istio-system|grep oauth2proxy|awk -F' ' '{print $1}'
  5. Utilisez le fichier YAML suivant pour créer un virtual service qui reçoit les demandes d'authentification de la passerelle d'entrée.

    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
    Important

    Pour éviter les conflits, ne créez pas d'autres virtual services qui correspondent au préfixe de chemin /oauth2.

Étape 5 : Créer une politique d'autorisation

  1. Sur la page de détails de l'instance ASM, sélectionnez Mesh Security Center > AuthorizationPolicy dans le volet de navigation de gauche. Sur la page qui s'affiche, cliquez sur Create from YAML.

  2. Sur la page Create, sélectionnez un Namespaces et un Scenario Template. Saisissez le fichier YAML suivant, puis cliquez sur 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
    Remarque

    Cette politique d'autorisation s'applique à toutes les requêtes envoyées à la passerelle d'entrée.

Étape 6 : Vérifier le résultat

  1. Dans un navigateur web, accédez à http://{IP_address_of_the_ingress_gateway}:80.

    La page de connexion OAuth2 Proxy s'affiche, contenant un bouton Sign in with OpenID Connect. Cela indique que OAuth2 Proxy a été déployé et intégré avec succès à OpenID Connect, et que le SSO est actif.

  2. Cliquez sur Sign in with OpenID Connect.

    Résultat attendu : La page de connexion Alibaba Cloud IDaaS s'affiche. La page contient des champs de saisie pour Account name, mobile number, or email et Password, ainsi qu'un bouton Log On. Cela confirme que la configuration SSO OIDC fonctionne.

  3. Sur la page de connexion Alibaba Cloud IDaaS, saisissez les identifiants de l'utilisateur de test que vous avez créé à l'étape 1 et cliquez sur Log On.

    Résultat attendu : Après une connexion réussie, la page de documentation Swagger API de httpbin.org s'affiche pour la version 0.9.2. La page affiche la description du service, « A simple HTTP Request & Response Service, » et répertorie les groupes d'API tels que HTTP Methods, Auth, Status codes et Request inspection. Cela confirme que la configuration SSO d'Alibaba Cloud IDaaS est valide.

  4. Cliquez sur Request inspection, puis choisissez /headers > Try it out > Execute.

    Résultat attendu : Après l'exécution de la requête, le serveur renvoie un code d'état 200 OK. Le corps de la réponse inclut un champ Authorization contenant un Bearer JWT, ce qui indique que l'autorisation JWT fonctionne.

    {
      "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. Copiez le JWT du jeton Bearer de l'étape précédente et analysez-le avec un débogueur JWT.

    Pour plus d'informations, consultez la page JWT.io.

    Résultat attendu : Le JWT analysé montre que l'algorithme alg dans l'HEADER est RS256. Le PAYLOAD contient des claims standards du jeton d'ID OIDC, tels que sub, jti, iss (qui est l'endpoint OIDC de votre instance EIAM), iat, nbf, exp, aud, at_hash, c_hash, email, email_verified, phone_number, phone_number_verified, name, preferred_username et updated_at. Cela confirme que le JWT contient les informations utilisateur d'Alibaba Cloud IDaaS et qu'ASM les a validées avec succès.