すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:ASM と Alibaba Cloud IDaaS の統合によるメッシュ内アプリケーションのシングルサインオン (SSO) の有効化

最終更新日:Apr 29, 2026

このトピックでは、Alibaba Cloud Service Mesh (ASM) を使用して、メッシュ内のアプリケーションでシングルサインオン (SSO) を有効にする方法について説明します。

前提条件

背景情報

多くのアプリケーションでは、認証済みユーザーのみがアクセスできるようにアクセスの制御が必要です。システムが複雑になるにつれて、シングルサインオン (SSO) が実用的なソリューションとして普及しています。SSO を使用すると、1 つのアカウントで複数のシステムにログインできます。ASM はカスタム権限付与サービスを提供し、メッシュ内のアプリケーションに対して非侵入型の SSO を実現します。

ASM を使用した SSO により、アプリケーションの修正および運用コストを削減できます。このトピックでは、ID プロバイダー (IdP) として Alibaba Cloud IDaaS インスタンスを使用して、メッシュ内のアプリケーションで SSO を有効にします。メッシュ内のアプリケーションは、認証または権限付与ロジックを実装する必要はありません。代わりに、ASM のカスタム権限付与サービスを構成して、Alibaba Cloud IDaaS または OpenID Connect (OIDC) プロトコルをサポートする任意の IdP と統合します。認証が成功すると、ASM は元のリクエストをユーザー ID 情報とともにアプリケーションに転送します。アプリケーションは、この ID データに基づいてリクエストを処理できます。

基本概念

概念

説明

IdP

ID プロバイダー (Identity Provider) の略です。IdP はユーザー名やパスワードなどを使用してユーザーの ID を検証します。たとえば、Alipay アカウントで Youku にログインする場合、Alipay が IdP として機能します。

OIDC

OIDC は OpenID Connect の略称であり、OAuth 2.0 上に構築された身分認証プロトコルです。詳細については、「OpenID Connect」をご参照ください。

Scope

OIDC の概念です。各 IdP はメールアドレスやプロファイルなどのさまざまな種類のユーザー情報を保存しています。これらのカテゴリはスコープと呼ばれます。認証 (ログイン) 時に、一部の IdP はアプリケーションがアクセスできるユーザーデータをユーザーが選択するよう求めます。各カテゴリはスコープに対応しています。

ステップ 1:EIAM クラウド ID サービスインスタンスとテストアカウントの作成

  1. EIAM クラウド ID サービスコンソールにログインし、IDaaS インスタンスを作成します。

    説明

    IDaaS インスタンスは独立したアカウントシステムとして機能します。IDaaS インスタンスの作成は、スタンドアロンのアカウントシステムを構築することと同等です。

  2. EIAM ページで、対象の IDaaS インスタンスの名前をクリックします。

  3. 左側のナビゲーションウィンドウで、Account > Accounts and Orgsを選択します。

  4. AccountページのAccountタブで、Create Userをクリックします。

  5. Create Userパネルで、アカウトの詳細を設定し、OKをクリックします。

ステップ 2:OIDC アプリケーションの追加と構成

IDaaS インスタンス内のアプリケーションは API エンドポイントと考えてください。IDaaS インスタンスは、個別のアプリケーションを通じて異なるエンドポイントを公開し、さまざまな SSO 方式をサポートできます。このトピックでは、OIDC アプリケーションを例として使用します。

  1. クラウド ID サービスコンソールの左側のナビゲーションウィンドウで、Application Managementをクリックします。

  2. Application Managementページで、Add Applicationをクリックします。

  3. Add Applicationページで、Standard Protocolsタブをクリックし、OIDCカードのAdd Applicationをクリックします。

  4. Add Application - OIDCダイアログボックスで、Application Nameを設定し、Addをクリックします。

  5. OIDC Applicationの詳細ページで、Sign-In > SSOを選択します。

  6. SSO構成ページで、Redirect URIsを設定します。Show Advanced Settingsをクリックします。scopesの下で取得したい情報を選択し、Saveをクリックします。

    URL

    説明

    この例では、リダイレクト URIhttp://${ASM gateway CLB address}/oauth2/callbackに設定します。${}を実際のアドレスに置き換えてください。

  7. OIDC Applicationの詳細ページで、Sign-In > Authorizeを選択し、Authorizeをクリックします。

  8. Authorize]ダイアログボックスで、手順 1 で作成したユーザーに権限を付与し、[Confirm]をクリックします。

OIDC アプリケーションの構成が完了したら、現在のアプリケーションのIssuerclient_idclient_secretなどの構成情報を記録し、ASM でのシングルサインオン構成時に使用します。

  • IssuerSign-In > SSO > Application Settingsにあります。Issuer

  • client_idおよびclient_secretGeneralセクションにあります。id

ステップ 3:テストアプリケーションのデプロイとゲートウェイ経由での公開

このトピックでは、テストに httpbin アプリケーションを使用します。httpbin はリクエストの内容を確認できるため、ログイン後に IdP から取得したユーザー情報を検証しやすくなります。

  1. 次の YAML を使用して、ご利用の ACK クラスターのデフォルト名前空間に httpbin アプリケーションをデプロイします。

    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. ASM コンソールで次の YAML を使用して、ご利用の ASM インスタンスのゲートウェイルールを構成します。詳細については、「ゲートウェイルールの管理」をご参照ください。

    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. 次の仮想サービスを ASM インスタンスに適用します。詳細については、「仮想サービスの管理」をご参照ください。

    この仮想サービスは、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. ゲートウェイルールと仮想サービスの構成後、コマンドcurl -I http://${ASM gateway external IP}:80を実行して、直接 httpbin サービスにアクセスします。

    出力例:httpbin

ステップ 4:ASM カスタム権限付与サービスの有効化と OIDC シングルサインオンの構成

  1. ASM コンソールにログインします。左側のナビゲーションウィンドウで、Service Mesh > メッシュ管理を選択します。

  2. メッシュ管理ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、メッシュセキュリティセンター > カスタム権限付与サービスを選択します。表示されたページで、カスタム権限付与サービスの定義をクリックします。

  3. Define External Authorization Serviceページで、OIDC Authz and Authn Serviceタブをクリックし、必要な設定を行って、Createをクリックします。

    説明

    OIDC アプリケーションの詳細はステップ 2から取得します。ログインリダイレクトアドレスとして ASM ゲートウェイを使用できます。Cookie Secret の詳細については、「Generating a Cookie Secret」をご参照ください。

  4. データプレーンクラスターの KubeConfig を使用して、次のコマンドを実行し、OIDC 外部権限付与サービスのドメイン名を取得します。

    kubectl get svc -n istio-system|grep oauth2proxy|awk -F' ' '{print $1}'
  5. 次の YAML を使用して、ASM ゲートウェイからの認証リクエストを処理する仮想サービスを作成します。

    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: # 前のステップで取得した外部権限付与サービスのドメイン名。
                port:
                  number: 4180
    重要

    競合を避けるため、プレフィックス/oauth2を持つパスに一致する他の仮想サービスがないことを確認してください。

ステップ 5:権限付与ポリシーの作成

  1. ASM インスタンスの詳細ページで、左側のナビゲーションウィンドウからメッシュセキュリティセンター > AuthorizationPolicyを選択します。表示されたページで、YAML から作成をクリックします。

  2. Createページで、NamespacesScenario Templateを選択します。次の YAML を構成し、Createをクリックします。

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      name: oidc
      namespace: istio-system
    spec:
      action: CUSTOM
      provider:
        name: httpextauth-oidc  # 以前に作成したカスタム権限付与ポリシーの名前。
      rules:
        - {}
      selector:
        matchLabels:
          istio: ingressgateway
    説明

    この権限付与ポリシーは、ASM ゲートウェイに入るすべてのリクエストに適用されます。

ステップ 6:結果の検証

  1. ブラウザでhttp://${ASM gateway external IP}:80にアクセスします。

    次のページが表示された場合、SSO は正常に動作しています。1

  2. OpenID Connect でサインインをクリックします。

    期待される結果:阿里云IDaaS

  3. Alibaba Cloud IDaaSログインページで、ステップ 1で作成したテストアカウトとパスワードを入力し、ログインをクリックします。

    期待される結果:httpbin

  4. リクエストの検査をクリックし、/headers > try it out > Executeを選択します。

    期待される結果:12

  5. Bearerの後のリクエストに含まれる JWT トークンを JWT デバッガーを使用して解析します。

    JWT デバッガーの詳細については、「JWT debugger」をご参照ください。

    期待される結果:JWT正常に解析されると、IDaaS に保存されているユーザー情報が表示されます。JWT は ASM によっても検証されています。