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

Alibaba Cloud Service Mesh:イングレスゲートウェイでの OIDC ベースのシングルサインオン (SSO) の構成

最終更新日:Mar 12, 2026

OAuth 2.0 を基盤とする OpenID Connect (OIDC) は、ID レイヤーを追加することでシングルサインオン (SSO) を可能にします。Service Mesh (ASM) イングレスゲートウェイで OIDC を構成すると、認証処理がゲートウェイレベルで一元化されます。アプリケーションは、コード変更を一切行わずに、Authorization ヘッダー内の JSON Web トークン (JWT) を通じて認証済みユーザーの ID を受け取ります。

主なメリット:

  • 関心の分離:アプリケーションはビジネスロジックに集中し、認証はゲートウェイが担当します。

  • 一貫した認証:ゲートウェイ後方の新規サービスは、自動的に同じ SSO フローを継承します。

  • アプリケーションの変更不要:ゲートウェイが未認証リクエストを検出し、ユーザーを ID プロバイダー (IdP) にリダイレクトします。

仕組み

以下のシーケンスは、ブラウザ、ASM イングレスゲートウェイ、および IdP 間の OIDC 認証コードフローを示しています。

ブラウザ                 イングレスゲートウェイ              IdP
  |                           |                        |
  |--- (1) HTTP リクエスト ----->|                        |
  |                           |-- 有効なセッションクッキーなし     |
  |<-- (2) 302 リダイレクト -----|   クッキーが検出された      |
  |                           |                        |
  |--- (3) 認証 ----------------------------->|
  |                           |                        |
  |<-- (4) 認証コード付きで -----------------------------|
  |       リダイレクト          |                        |
  |                           |                        |
  |--- (4) /oauth2/callback ->|                        |
  |                           |--- (5) コードの交換 ----->|
  |                           |<-- (5) トークン ---------|
  |                           |                        |
  |<-- (6) セッションクッキーの設定 |                        |
  |       + アプリケーションへの転送    |                        |
  |       (Auth ヘッダー内に JWT)|                        |
  |                           |                        |
  |--- (7) 後続のリクエスト --->|                        |
  |   (セッションクッキー有効)  |-- 直接転送 ------------> |
  |                           |   (IdP 呼び出し不要)        |
  1. ユーザーがイングレスゲートウェイを経由してアプリケーションにリクエストを送信します。

  2. ゲートウェイが有効なセッションクッキーを検出できない場合、ブラウザを IdP のログインページにリダイレクトします。

  3. ユーザーが IdP で認証を行います。

  4. IdP が、認証コードを含むブラウザをゲートウェイのコールバック URL (/oauth2/callback) にリダイレクトします。

  5. ゲートウェイが、認証コードを IdP と交換してトークン(ID トークン、アクセストークン)を取得します。

  6. ゲートウェイがブラウザにセッションクッキーを設定し、Authorization ヘッダー内に JWT を含めて、リクエストをアップストリームアプリケーションに転送します。

  7. 後続のリクエストでは、ゲートウェイがセッションクッキーを検証し、直接リクエストを転送します。追加の IdP とのやり取りは不要です。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

IdP の構成後に、ステップ 5 で使用する以下の値をメモしてください。

リダイレクト URI: http://${イングレスゲートウェイの IP アドレス}/oauth2/callback
発行者 (issuer): https://eiam-api-cn-hangzhou.aliyuncs.com/v2/idaas_tbn25osdlmz6gtqfq3j2pz****/app_ml5tzapsl7zmfo53wb3nwk****/oidc
クライアント ID: ********
クライアントシークレット: *********
この例では、ID プロバイダーとして Alibaba Cloud Identity as a Service (IDaaS) を使用しています。Keycloak などの自社管理型 OIDC IdP を使用する場合は、「Keycloak を ASM と統合してシングルサインオンを実装する」をご参照ください。

OIDC シングルサインオンの構成

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

  2. メッシュ管理 ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、ASM ゲートウェイ > イングレスゲートウェイ を選択します。

  3. イングレスゲートウェイ ページで、対象のイングレスゲートウェイをクリックします。

  4. 左側のナビゲーションウィンドウで、ゲートウェイセキュリティ > OIDC シングルサインオン を選択します。

  5. OIDC 構成 ステップで、ゲートウェイ OIDC シングルサインオンを有効化 をオンにし、以下のパラメーターを構成して、次へ をクリックします。

    重要

    コールバックアドレス が、IdP に登録したリダイレクト URI と一致していることを確認してください。不一致の場合、IdP がコールバックを拒否するため、認証に失敗します。

    パラメーター説明
    リダイレクトアドレスOIDC コールバックに使用するプロトコルおよびアドレスです。本例では、イングレスゲートウェイの IP アドレスを使用 を選択し、http を指定します。
    コールバックアドレス認証後に IdP がユーザーをリダイレクトする URL です。これは、IdP に登録したリダイレクト URI と一致する必要があります。
    OIDC 発行者 URLOIDC 発行者を識別する URL です。IdP から取得してください。
    クライアント IDアプリケーション登録時に IdP から割り当てられたクライアント ID です。
    クライアントシークレットIdP から割り当てられたクライアントシークレットです。
    Cookie シークレット安全なクッキー用のシード文字列です。Base64 エンコーディング可能です。
    クッキー有効期間クッキーの有効期間です。0 を設定すると、クッキーは期限切れになりません。
    クッキー更新間隔クッキーを更新する頻度です。0 を設定すると、自動更新が無効になります。
    スコープ要求するユーザー情報の種類です(例:openidprofileemail)。IdP が指定したスコープをサポートしている必要があります。

    OIDC configuration

  6. マッチングルール ステップで、パスマッチングルールを構成し、送信 をクリックします。送信 をクリックすると、完了 ステップに確認メッセージおよび生成された Istio セキュリティリソースが表示されます。YAML をクリックして、リソース構成を確認できます。

    重要

    コールバックパス( /oauth2/callback )がイングレスゲートウェイを介してアクセス可能であることを確認してください。マッチモードが [一致した場合に認証] の場合、コールバックパスはブロックされてはいけません。

    パラメーター説明
    マッチモードマッチしたパスに対する認証の必要性を決定します。有効な値は以下のとおりです:
    • 一致時のみ認証:指定されたパスにアクセスするには、ユーザーが認証を受ける必要があります。
    • 一致時は認証をバイパス:指定されたパスは、認証なしで公開アクセス可能です。
    マッチルールの追加パス スイッチをオンにして、保護対象のパスを入力します。本例では、/productpage を設定し、当該パスへのリクエストに OIDC 認証を適用します。

構成の確認

ブラウザを開き、http://<イングレスゲートウェイの IP アドレス>/productpage にアクセスします。

<イングレスゲートウェイの IP アドレス> を、イングレスゲートウェイの IP アドレスに置き換えてください。IdP のログインページが表示された場合、OIDC リダイレクトが正常に動作しています。認証後にアプリケーションページが読み込まれれば、SSO が完全に構成されたことを確認できます。

OIDC verification

サインアウト

認証済みセッションを完全に終了するには、以下の 2 つの操作が必要です。

  1. IdP セッションの終了:IdP のログアウトエンドポイントを使用して IdP からログアウトします。各 IdP は、この目的のための特定の URI を提供します。

  2. ゲートウェイセッションのクリア:イングレスゲートウェイの /oauth2/sign_out にリクエストを送信します。これにより、クライアント上にイングレスゲートウェイが設定したセッションクッキーがクリアされます。

サインアウト時の自動リダイレクト(ASM v1.18.147+)

ASM v1.18.147 以降では、OIDC 構成ページで IdP のログアウトエンドポイントを設定できます。エンドポイントを設定した後は、以下の手順を実行します。

  1. /oauth2/sign_out への未認証アクセスを許可するマッチルールを追加します(一致時は認証をバイパス を使用)。

  2. ユーザーが /oauth2/sign_out にアクセスすると、ゲートウェイがセッションクッキーをクリアし、ブラウザを設定済みの IdP ログアウトエンドポイントにリダイレクトします。

Alibaba Cloud IDaaS のログアウト構成については、「SLO」をご参照ください。

アプリケーション内でのユーザー ID の読み取り

OIDC シングルサインオンが構成されると、イングレスゲートウェイは、すべての認証済みリクエストに JWT を含む Authorization ヘッダーを追加します。アプリケーションは、この JWT からユーザー ID を読み取ります。追加の IdP 呼び出しは不要です。

以下の例では、JWT からユーザーのクレームを抽出しています。

import base64
import json

def get_user_from_jwt(request):
    auth_header = request.headers.get("Authorization", "")
    if not auth_header.startswith("Bearer "):
        return None

    token = auth_header.split(" ", 1)[1]
    # JWT ペイロードは 2 番目の Base64 エンコードセグメント
    payload = token.split(".")[1]
    # Base64 デコード用のパディングを追加
    payload += "=" * (4 - len(payload) % 4)
    claims = json.loads(base64.urlsafe_b64decode(payload))

    # 一般的なクレーム:sub、email、name、preferred_username
    return claims
イングレスゲートウェイは既に JWT の署名を検証済みです。アプリケーションは、IdP に対してトークンを再検証することなく、クレームを信頼できます。

よくある質問

ログイン時に追加されるセッションクッキーとは何ですか?

ゲートウェイは、このクッキーを使用してセッション状態を追跡します。アプリケーションは、このクッキーを無視し、代わりに Authorization ヘッダー内の JWT からユーザー情報を読み取ることができます。

ID プロバイダーから拡張ユーザー情報を取得するにはどうすればよいですか?

ASM 側の構成は不要です。拡張クレームおよびユーザー属性は、ID プロバイダー自体で構成します。Alibaba Cloud IDaaS の場合、「OIDC id_token 拡張フィールドのルール」をご参照ください。

関連ドキュメント

  • OIDC アプリケーションの設定項目(API オペレーション、シークレットのローテーション、IDaaS がサポートする OIDC グラントタイプ、IDaaS 内の構成、アプリケーション内の構成など)について詳しくは、「一般設定」「SSO の構成」「OIDC SSO 構成」「OIDC id_token 拡張フィールドのルール」をご参照ください。

  • IDaaS からの SSO を実装してアプリケーションにログインしたユーザーがログアウトする場合、アプリケーションからグローバルログアウトを開始することで、アプリケーションセッションおよび主要な IDaaS ログインセッションを同時に終了できます。詳細については、「SLO」をご参照ください。

  • 自社管理型 IdP の統合:「Keycloak を ASM と統合してシングルサインオンを実装する