Citrix CloudのIDプロバイダーとしてオンプレミスのNetScaler Gatewayを使用する
-
引き続き、既存のNetScaler Gatewayでユーザーを認証するため、Citrix Workspace経由でオンプレミスのVirtual Apps and Desktopsのリソースにアクセスできます。
-
NetScaler Gatewayの認証、承認、および監査機能をCitrix Workspaceで使用してください。
-
パススルー認証、スマートカード、セキュアトークン、条件付きアクセスポリシー、フェデレーションなどの機能を使用して、ユーザーがCitrix Workspace を通じて必要なリソースにアクセスできるようにします。
-
NetScaler Gateway 13.0 41.20 アドバンスエディションまたはそれ以降
-
NetScaler Gateway 12.1 54.13 アドバンスエディションまたはそれ以降
前提条件
-
クラウドコネクタ-Citrix Cloud Connectorソフトウェアをインストールするには、少なくとも2台のサーバーが必要です。
-
Active Directory -必要なチェックを実行します。
-
NetScaler Gatewayの要件
-
クラシックポリシーの非推奨のため、オンプレミスゲートウェイで高度なポリシーを使用します。
-
Citrix Workspaceへのサブスクライバを認証するためにゲートウェイを構成する場合、ゲートウェイはOpenID Connectプロバイダーとして機能します。Citrix CloudとGateway間のメッセージはOIDCプロトコルに準拠し、デジタル署名トークンが含まれます。したがって、これらのトークンに署名するための証明書を構成する必要があります。
-
クロック同期-ゲートウェイはNTP時刻に同期する必要があります。
-
オンプレミスのNetScaler Gateway でOAuth IdPポリシーを作成する
-
OAuth IDプロバイダープロファイルを作成する。
-
OAuth IdP ポリシーを追加します。
-
OAuth IdP ポリシーを認証仮想サーバーにバインドします。
-
証明書をグローバルにバインドします。
CLI を使用した OAuth IdP プロファイルの作成
add authentication OAuthIDPProfile <name> [-clientID <string>][-clientSecret ][-redirectURL <URL>][-issuer <string>][-audience <string>][-skewTime <mins>] [-defaultAuthenticationGroup <string>]
add authentication OAuthIdPPolicy <name> -rule <expression> [-action <string>] [-undefAction <string>] [-comment <string>][-logAction <string>]
add authentication ldapAction <name> -serverIP <IP> -ldapBase "dc=aaa,dc=local"
ldapBindDn <administrator@aaa.local> -ldapBindDnPassword <password> -ldapLoginName sAMAccountName
add authentication policy <name> -rule <expression> -action <string>
bind authentication vserver auth_vs -policy <ldap_policy_name> -priority <integer> -gotoPriorityExpression NEXT
bind authentication vserver auth_vs -policy <OAuthIDPPolicyName> -priority <integer> -gotoPriorityExpression END
bind vpn global -certkeyName <>
GUI を使用した OAuth IdP プロファイルの作成
-
OAuth IdP プロファイルを設定します。注:
-
-
名前:認証プロファイルの名前。文字、数字、またはアンダースコア文字(_)で開始する必要があります。名前には、英字、数字、ハイフン (-)、ピリオド (.)、ポンド (#)、スペース ()、アットマーク (@)、等号 (=)、コロン (:)、およびアンダースコアのみを含める必要があります。プロファイルの作成後は変更できません。
-
クライアント ID: SP を識別する一意の文字列。承認サーバーは、このIDを使用してクライアントの構成を推測します。最大文字数:127。
-
クライアントシークレット:ユーザーと認証サーバーによって設定されたシークレット文字列。最大文字数:239。
-
リダイレクト URL: コード/トークンを投稿する必要がある SP 上のエンドポイント。
-
発行者名:トークンを受け入れるサーバーのID。最大文字数:127。例:
<https://GatewayFQDN.com> -
オーディエンス:IdP から送信されるトークンのターゲット受信者。このトークンは受信者によって確認されます。
-
スキュー時間:このオプションは、NetScalerが受信トークンで許容するクロックスキュー(分単位)を指定します。たとえば、SkewTime が 10 の場合、トークンは (現在の時刻-10) 分から (現在時刻 + 10) 分、つまり 20 分まで有効です。デフォルト値:5。
-
デフォルト認証グループ:このプロファイルがIdPによって選択されたときにセッション内部グループリストに追加されるグループで、nFactorフローで使用できます。証明書パーティ関連の nFactor フローを識別するための認証ポリシーの式(AAA.USER.IS_MEMBER_OF (「xxx」))で使用できます。最大文字数:63。
このプロファイルのセッションにグループが追加され、ポリシーの評価が簡素化され、ポリシーのカスタマイズに役立ちます。このグループは、抽出されたグループに加えて認証が成功した場合に選択されるデフォルトのグループです。-
依存パーティメタデータURL:NetScaler IdPが構成中の依存パーティに関する詳細を取得できるエンドポイント。メタデータ応答には、RP 公開鍵の jwks_uri のエンドポイントが含まれている必要があります。最大長は 255 です。
-
更新間隔:依存パーティメタデータが更新される間隔。デフォルトの間隔は 50 です。
-
トークンの暗号化:このオプションを選択すると、 NetScalerから送信されるトークンは暗号化されます。
-
署名サービス: データの署名に使用されるクラウドサービスの名前。これは、署名がクラウドにオフロードされた場合にのみ適用されます。
-
属性:ID トークンに挿入される属性の名前と値のペア。最大長は 1047 文字です。
-
パスワードを送信:ID トークンで暗号化されたパスワードを送信するには、このオプションを選択します。
-
-
-
Name - 認証ポリシーの名前。
-
Action - 以前に作成されたプロファイルの名前。
-
Log Action - 要求がこのポリシーに一致する場合に使用するメッセージログアクションの名前。必須の提出ではありません。
-
Undefined-Resultアクション :ポリシー評価の結果が未定義(UNDEF)である場合に実行するアクション。必須フィールドではありません。
-
Expression - ポリシーが特定の要求に応答するために使用するデフォルトの構文式。例:true。
-
Comments - ポリシーに関するコメント。
-
OAuthIdP ポリシーと LDAP ポリシーを認証仮想サーバーにバインドする
-
設定 > セキュリティ > AAA アプリケーショントラフィック > ポリシー > 認証 > 詳細ポリシー > アクション > LDAPに移動します。
-
-
Name — LDAP アクションの名前
-
サーバ名/サーバ IP — LDAP サーバの FQDN または IP を指定します。
-
ベース DN: LDAP 検索を開始する基本。例:
dc=aaa,dc=local。 -
管理者バインド DN: LDAP サーバーへのバインドのユーザー名。例:
admin@aaa.local。 -
管理者パスワード/パスワードの確認:LDAP をバインドするためのパスワード
-
**サーバーログオン名属性:****「samAccountName」**を選択します。
-
その他のフィールドは必須ではないため、必要に応じて設定できます。
-
-
設定 > セキュリティ > AAA アプリケーショントラフィック > ポリシー > 認証 > 詳細ポリシー > ポリシーにナビゲートして下さい。
-
-
Name — LDAP 認証ポリシーの名前。
-
Expression — ポリシーが特定のリクエストに応答するために使用するデフォルトの構文式。例:true**。
-
認証コンテキストクラス参照値を保存
/oauth/idp/ 認証エンドポイントのログインは、以下の形式の ACR 値パラメータを含むクエリを受信します。NetScalerは、ACR値をユーザーセッション属性に保存します。
GET /oauth/idp/login?response_type=code&scope=openid%20profile%20ctxs_cc&acr_values=device_id:69eec3333333333+wsp:wspmultiurlmain.cloud.com&client_id=test&redirect_uri=https%3A%2F%2Fav6.aaa.local%2Foauth%2Flogin&state=Y3R4PXlFYkpFdEJOeDFLN0hUY2VCc1pBOGc2RjU3d21PcjJ2aXprZkhFSkdBTzVVTzM4eEZBUW1qTEFwR25DSE&code_challenge_method=S256&code_challenge=IJgD-qaJZdhuGt3m262BjjMXrFTOwioV6uSBA-uIY18
acr_values=device_id:69eec3333333333+wsp:wspmultiurlmain.cloud.comです。
-
WSP URL を取得するには、ポリシー設定内の式
aaa.user.wsp.eq("URL")を使用します。例:add authentication policy wsp_check -rule aaa.user.wsp.eq("wspmultiurlmain.cloud.com ") -action ldap-act -
ACR 値パラメータからデバイス ID を取得するには、ポリシー設定内の式
aaa.user.acr_values.value("device_id").eq(value)を使用します。例:add authentication policy acr_value_check -rule aaa.user.acr_values.value("device_id").eq("69eec3333333333") -action ldap-act -
ACR 値パラメータから WSP 値を取得するには、ポリシー設定内の式
aaa.user.acr_values.value("wsp").eq("URL")を使用します。例:add authentication policy acr_value_check -rule aaa.user.acr_values.value("wsp").eq("wspmultiurlmain.cloud.com") -action ldap-act