OpenID Connect (OIDC) は、OAuth 2.0 上に構築された ID 認証および権限付与プロトコルであり、主にシングルサインオン (SSO) の実装に使用されます。ASM セキュリティポリシーで OIDC SSO を設定することにより、Alibaba Cloud IDaaS またはその他の OIDC 準拠の ID プロバイダー (IdP) を使用して、ユーザーが一度ログインするだけで複数のアプリケーションにアクセスできるようになります。このアプローチは、アプリケーション自体を変更することなく機能するため、アプリケーションのセキュリティが向上し、開発と管理が簡素化されます。
前提条件
-
ゲートウェイルールと仮想サービスを作成し、次のパスにアクセスできることを確認済みであること。詳細については、「Istio リソースを使用したバージョン間のトラフィックルーティング」のステップ 1 から 3 をご参照ください。
http://${GATEWAY_ADDRESS}/productpage http://${GATEWAY_ADDRESS}/api/v1/products/1 http://${GATEWAY_ADDRESS}/static/jquery.min.js -
ID プロバイダー (IdP) が設定されています。 手順については、「ASM と Alibaba Cloud IDaaS を統合して、サービスメッシュ内のアプリケーションに対して SSO を有効にする」のステップ 1およびステップ 2をご参照ください。
IdP の設定後、次の情報を取得します。この情報はステップ5 の設定で必要になります。
redirect uri: http://${GATEWAY_ADDRESS}/oauth2/callback issuer: https://eiam-api-cn-hangzhou.aliyuncs.com/v2/idaas_tbn25osdlmz6gtqfq3j2pz****/app_ml5tzapsl7zmfo53wb3nwk****/oidc client id: app_ml5tzapsl7zmfo53wb3nwk**** client secret: CSCfHeZ1nyvfMWyKHtE8ZRdif7j89dv9CvmJLurtGC****
操作手順
このトピックでは、Alibaba Cloud IDaaS の IdP を例として使用します。セルフマネージド OIDC サービスを使用する場合は、「ASM と Keycloak を統合してサービスメッシュ内のアプリケーションの SSO を有効化」をご参照ください。
-
ASM コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
-
[メッシュ管理] ページで、対象の ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
-
ASMSecurityPolicy ページで、Create をクリックします。
-
Create ASMSecurityPolicy ダイアログボックスで、OIDC Single Sign-On をクリックし、OK をクリックします。
-
OIDC Config ウィザードでパラメーターを設定し、Next をクリックします。
次の表に、この例のパラメーターを示します。
パラメーター
説明
ASMSecurityPolicyName
名前を test-oidc に設定します。
Redirect address
Use ingressgateway IP address または Customized Domain を選択できます。この例では、Use ingressgateway IP address を選択し、次に [http] と [ingressgateway] を選択します。
Callback Address
リダイレクト URI です。
OIDC Issuer URL
OIDC プロバイダーを識別および検証する URL です。
Client ID
IdP によって提供されるクライアント ID です。
Client Secret
IdP によって提供されるクライアントシークレットです。
Cookie Secret
セキュアな Cookie のシードです。Base64 エンコーディングがサポートされています。
Cookie Expire
Cookie の有効期間です。値が 0 の場合、Cookie は無期限になります。
Cookie refresh interval
Cookie が更新される間隔です。値が 0 の場合、更新は無効になります。
Scopes
取得するスコープを指定します。指定するスコープは、発行者によってサポートされている必要があります。
スコープの詳細については、「ASM と Alibaba Cloud IDaaS を統合してサービスメッシュ内のアプリケーションの SSO を有効化」をご参照ください。
この例では、[Cookie の有効期限] を
3600秒、[Cookie の更新間隔] を600秒に設定し、[スコープ] で [openid] と [phone] を選択します。 -
Workload and Match Rules ウィザードで、Add Workload Group をクリックします。New Workload Group ダイアログボックスでパラメーターを設定し、OK をクリックしてから、Submit をクリックします。
次の表に、この例のパラメーターを示します。
パラメーター
説明
Workload Group Name
名前を test-policy に設定します。
Workload List
デフォルトでは、前のステップで Redirect address に設定したゲートウェイが選択されており、変更できません。別のワークロードを選択するには、OIDC Config ウィザードに戻り、Redirect address の情報を変更します。
説明OIDC Config ウィザードで Redirect address に Customized Domain を選択した場合は、次の手順を実行します。
-
New Workload Group ダイアログボックスで、Add Workload をクリックし、Gateway Scope を選択します。
-
Select workloads セクションで、対象のワークロードを選択し、
アイコンをクリックして selected エリアに移動し、OK をクリックします。
Match Rule List
Match Mode には 2 つのオプションがあります。
-
Auth If Matched:指定されたルールに一致するリクエストに対して認証を要求します。
-
Bypass Auth If Matched:ルールに一致するリクエストは、認証なしでアクセスできます。
この例では、Match Mode を Auth If Matched に設定し、Match Mode を Custom Matching Rules に設定します。次に、Add Match Rule をクリックして、/static および /api で始まるパスに OIDC 認証を要求するルールを追加します。
-
ルール 1:Path を有効にし、値を /static/* に設定します。
-
ルール 2:Path を有効にし、値を /api/* に設定します。
ポリシーが作成されると、Complete ステップに ASM セキュリティポリシーが正常に作成されました と表示されます。View YAML をクリックして作成されたリソースを表示するか、Complete をクリックして ASMSecurityPolicy ページに戻り、新しいセキュリティポリシーを表示できます。
-
-
OIDC SSO の設定を検証します。
-
Web ブラウザーで、次の URL に順番にアクセスします。
http://${GATEWAY_ADDRESS}/productpage http://${GATEWAY_ADDRESS}/api/v1/products/1 http://${GATEWAY_ADDRESS}/static/jquery.min.js次の結果は、OIDC SSO の設定が機能していることを示しています。
-
/productpageで始まるパスへのリクエストは、認証なしでアクセスできます。BookInfo サンプルアプリケーションの productpage にアクセスすると、書籍 The Comedy of Errors の概要が表示されます。 -
/apiおよび/staticで始まるパスへのリクエストには認証が必要です。これらのパスにアクセスすると、Alibaba Cloud IDaaS のログインページにリダイレクトされます。[アカウント、電話番号、またはメールアドレス] と [パスワード] のテキストボックスに認証情報を入力し、[ログイン] をクリックして認証する必要があります。
-
-
OIDC SSO の設定を変更します。
-
ASMSecurityPolicy ページで、対象の OIDC セキュリティポリシーを見つけ、Operator 列の edit をクリックします。
-
OIDC Config ウィザードで、Next をクリックします。
-
Workload and Match Rules ウィザードで、対象のワークロードグループを見つけ、Operator 列の edit をクリックします。設定を変更し、OK をクリックしてから、Submit をクリックします。
次の表に、この例のパラメーターを示します。
パラメーター
説明
Match Mode
Bypass Auth If Matched を選択します。
Matching Rules
Add Match Rule をクリックして、次のルールを設定します。この設定により、/productpage および /static で始まるパスへのリクエストが OIDC 認証をバイパスできるようになります。
-
ルール 1:Path を有効にし、値を /productpage に設定します。
-
ルール 2:Path を有効にし、値を /static/* に設定します。
-
-
-
変更を検証するには、ブラウザーで新しいシークレットウィンドウを開き、次の URL にアクセスします。
http://${GATEWAY_ADDRESS}/productpage http://${GATEWAY_ADDRESS}/api/v1/products/1 http://${GATEWAY_ADDRESS}/static/jquery.min.js次の結果は、変更された設定が機能していることを示しています。
-
/productpageおよび/staticで始まるパスへのリクエストは、認証なしでアクセスできます。 -
/apiで始まるパスへのリクエストには認証が必要です。
-
-
関連ドキュメント
-
API アクセス、キーのローテーション、さまざまな OIDC モードに対する IDaaS のサポート、IDaaS およびアプリケーション側の設定など、OIDC アプリケーション設定の詳細については、「基本設定」、「シングルサインオンの一般的な手順」、「OIDC SSO の設定」、および「OIDC id_token 拡張値の仕様」をご参照ください。
-
IDaaS SSO でアプリケーションにログインした後、アプリケーションからグローバルログアウトを開始して、メインの IDaaS セッションを終了できます。このプロセスはシングルログアウト (SLO) と呼ばれます。詳細については、「シングルログアウト (SLO)」をご参照ください。