OpenID Connect(OIDC)は、OAuth 2.0 ベースの ID 認証および認可プロトコルであり、シングルサインオン(SSO)の実装によく使用されます。 サービスメッシュ(ASM)セキュリティポリシーを構成して OIDC SSO を実装すると、Alibaba Cloud Identity as a Service(IDaaS)または OIDC プロトコルに準拠するその他の ID プロバイダー(IdP)から提供される ID 情報を使用して、アプリケーションを変更することなく、複数の関連システムに単一の ID でログオンできます。 これにより、アプリケーションのセキュリティが向上し、アプリケーションの開発と管理が簡素化されます。
前提条件
Istio ゲートウェイと仮想サービスが作成され、以下のパスにアクセスできるようになっていること。 詳細については、Istio リソースを使用して異なるバージョンのサービスにトラフィックをルーティングするの手順 1 ~ 3 をご参照ください。
http://${IP address of the ingress gateway}/productpage http://${IP address of the ingress gateway}/api/v1/products/1 http://${IP address of the ingress gateway}/static/jquery.min.js
IdP が構成されていること。 詳細については、Alibaba Cloud IDaaS と ASM を統合してシングルサインオンを実装するの手順 1 および 手順 2 をご参照ください。
IdP を構成した後、手順 5 で使用する以下の情報を取得できます。
redirect uri: http://${IP address of the ingress gateway}/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 として使用して、ASM 内のアプリケーションに SSO を実装します。 セルフマネージド OIDC IdP を使用する場合は、Keycloak と ASM を統合して SSO を実装するをご参照ください。
ASM コンソール にログオンします。 左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。 左側のナビゲーションペインで、 を選択します。
[asmsecuritypolicy] ページで、[作成] をクリックします。
[asmsecuritypolicy の作成] ダイアログボックスで、[OIDC シングルサインオン] をクリックし、[OK] をクリックします。
構成ウィザードの [OIDC 構成] ステップで、パラメーターを構成し、[次へ] をクリックします。
次の表にパラメーターを示します。
パラメーター
説明
ASMSecurityPolicyName
ASM セキュリティポリシーの名前。 この例では、名前は test-oidc に設定されています。
リダイレクトアドレス
次のオプションが用意されています: [ingressgateway IP アドレスを使用] および [カスタムドメイン]。 この例では、[ingressgateway IP アドレスを使用] が選択されています。 [http] および [ingressgateway] が選択されています。
コールバックアドレス
リダイレクト URL。
OIDC 発行者 URL
OIDC 発行者を識別および認証するために使用される URL。
クライアント ID
発行者から提供されるクライアント ID。
クライアントシークレット
発行者から提供されるクライアントシークレット。
Cookie シークレット
セキュア Cookie のシード文字列。Base64 エンコードできます。
Cookie の有効期限
Cookie の有効期間。 この期間が経過すると、Cookie は期限切れになります。 このパラメーターを 0 に設定すると、Cookie は期限切れになりません。
Cookie の更新間隔
Cookie が更新される間隔。 このパラメーターを 0 に設定すると、Cookie は更新されません。
スコープ
取得できるユーザー情報のタイプ。 指定されたスコープは、発行者によってサポートされている必要があります。
スコープの設定方法の詳細については、Alibaba Cloud IDaaS と ASM を統合してシングルサインオンを実装するをご参照ください。
構成ウィザードの [ワークロードと一致ルール] ステップで、[ワークロードグループの追加] をクリックします。 [新しいワークロードグループ] ダイアログボックスで、パラメーターを構成し、[OK] をクリックしてから、[送信] をクリックします。
次の表に、この例のパラメーターの構成方法を示します。
パラメーター
説明
ワークロードグループ名
パラメーターを test-policy に設定します。
ワークロードリスト
前のステップで [リダイレクトアドレス] パラメーターに指定したイングレスゲートウェイがデフォルトで選択されており、変更できません。 他のワークロードを選択する場合は、[OIDC 構成] ステップに戻り、[リダイレクトアドレス] 設定を変更します。
説明[OIDC 構成] ステップで [リダイレクトアドレス] パラメーターを [カスタムドメイン] に設定した場合は、次の手順を実行します。
[新しいワークロードグループ] ダイアログボックスで、[ワークロードの追加] をクリックし、[ゲートウェイスコープ] を選択します。
[ワークロードの選択] ボックスで、追加するワークロードを選択し、
アイコンをクリックして選択したワークロードを [選択済み] ボックスに追加し、[OK] をクリックします。
一致ルールリスト
次の 2 つの一致モードを使用できます。
[一致した場合に認証]: ワークロードにアクセスするには、ユーザーを認証する必要があります。
[一致した場合に認証をバイパス]: ワークロードにアクセスするために認証は必要ありません。
この例では、[一致した場合に認証] を選択します。 [一致ルール] には [カスタム一致ルール] を選択します。 次に、[一致ルールの追加] をクリックし、次のルールを構成します。これらのルールは、/static および /api で始まるパス内のリソースにアクセスするリクエストに OIDC 認証が必要であることを指定します。
ルール 1:[パス] スイッチをオンにし、パラメーターを /static/* に設定します。
ルール 2:[パス] スイッチをオンにし、パラメーターを /api/* に設定します。
構成ウィザードの [完了] ステップで、「ASMSecurityPolicy が正常に作成されました」というメッセージが表示され、ASM セキュリティポリシーが作成されたことを示します。 [YAML] をクリックして作成されたリソースを表示するか、[完了] をクリックして [asmsecuritypolicy] ページに戻り、作成されたセキュリティポリシーを表示できます。
OIDC SSO 構成が有効になっているかどうかを確認します。
ブラウザーを開き、次の URL にアクセスします。
http://${IP address of the ingress gateway}/productpage http://${IP address of the ingress gateway}/api/v1/products/1 http://${IP address of the ingress gateway}/static/jquery.min.js
次の結果は、OIDC SSO 構成が有効になっていることを示しています。
/productpage
で始まるパスにアクセスするリクエストは、認証なしで許可されます。/api
および/static
で始まるパスにアクセスするリクエストには、認証が必要です。
OIDC SSO 構成を変更します。
[asmsecuritypolicy] ページで、変更する OIDC SSO セキュリティポリシーを見つけ、[アクション] 列の [編集] をクリックします。
構成ウィザードの [OIDC 構成] ステップで、[次へ] をクリックします。
[ワークロードと一致ルール] ステップで、変更するワークロードグループを見つけ、[オペレーター] 列の [編集] をクリックします。 パラメーター設定を変更し、[OK] をクリックしてから、[送信] をクリックします。
次の表に、この例のパラメーター設定の変更方法を示します。
パラメーター
説明
一致モード
[一致した場合に認証をバイパス] を選択します。
一致ルール
[一致ルールの追加] をクリックし、次のルールを構成します。これらのルールは、/productpage および /static で始まるパスにアクセスするリクエストが OIDC 認証なしで許可されることを指定します。
ルール 1:[パス] スイッチをオンにし、パラメーターを /productpage に設定します。
ルール 2:[パス] スイッチをオンにし、パラメーターを /static/* に設定します。
シークレットモードでブラウザーを開き、次の URL にアクセスします。
http://${IP address of the ingress gateway}/productpage http://${IP address of the ingress gateway}/api/v1/products/1 http://${IP address of the ingress gateway}/static/jquery.min.js
次の結果は、新しい OIDC SSO 構成が有効になっていることを示しています。
/productpage
および/static
で始まるパスにアクセスするリクエストは、認証なしで許可されます。/api
で始まるパスにアクセスするリクエストには、認証が必要です。
関連情報
API 操作、シークレットローテーション、IDaaS でサポートされている OIDC 付処理タイプ、IDaaS での構成、アプリケーションでの構成など、OIDC アプリケーションの構成項目の詳細については、一般的な構成、SSO の構成、OIDC SSO 構成、および OIDC id_token 拡張フィールドのルール をご参照ください。
IDaaS を利用した SSO を使用してアプリケーションにログオンしているユーザーがログアウトする場合、アプリケーションでグローバルログアウトを開始して、アプリケーションセッションとプライマリ IDaaS ログオンセッションを終了できます。 詳細については、SLO をご参照ください。