オンプレミスCitrix GatewayをIDプロバイダーとして使用したCitrix Workspaceへのドメインパススルー
重要:
本記事は、ドメインパススルー認証の構成に役立ちます。オンプレミスのGatewayをIDプロバイダーとして既に設定している場合は、「Citrix Gatewayの認証方法としてドメインパススルーを構成する」セクションまでスキップしてください。
Citrix Cloudでは、オンプレミスのCitrix GatewayをIDプロバイダーとして使用してワークスペースにサインインする利用者が認証されるように設定できます。
Citrix Gateway認証を使用すると、以下のことを実行できます:
- 引き続き、既存のCitrix Gatewayでユーザーを認証するため、Citrix Workspace経由でオンプレミスのVirtual Apps and Desktopsのリソースにアクセスできます。
- Citrix WorkspaceでCitrix Gatewayの認証、承認、および監査機能を使用できます。
- パススルー認証、スマートカード、セキュアトークン、条件付きアクセスポリシー、フェデレーションなどの機能を使用して、ユーザーに必要なリソースへのCitrix Workspace経由のアクセスを提供します。
Citrix Gateway認証は、次の製品バージョンでの使用がサポートされています:
- Citrix Gateway 13.1.4.43 Advanced Edition以降
前提条件:
- Cloud Connectors - Citrix Cloud Connectorソフトウェアのインストール先となるサーバーが少なくとも2台必要です。
- Active Directory - ドメインが登録されていることを確認します。
- Citrix Gatewayの要件
- 従来のポリシーは廃止されたため、オンプレミスゲートウェイでは拡張ポリシーを使用してください。
- Citrix Workspaceの利用者を認証するためにGatewayを構成する場合、そのゲートウェイはOpenID Connectプロバイダーとして機能します。Citrix CloudとGateway間のメッセージはOIDCプロトコルに準拠し、デジタル署名トークンが含まれます。したがって、これらのトークンに署名するための証明書を構成する必要があります。
- クロック同期 - Citrix GatewayをNTP(ネットワークタイムプロトコル)の時刻に同期する必要があります。
詳しくは、Citrix Cloudドキュメントの「前提条件」を参照してください。
OAuth IdPポリシーを作成する前に、IDプロバイダーの認証オプションとしてGatewayを使用するようにCitrix WorkspaceまたはCloudを設定する必要があります。セットアップ方法について詳しくは、「オンプレミスのCitrix GatewayをCitrix Cloudに接続する」を参照してください。セットアップが完了すると、OAuth IDプロバイダーポリシーの作成に必要なクライアントID、シークレット、およびリダイレクトURLが生成されます。
WebのWorkspaceでのドメインパススルー認証は、Internet Explorer、Microsoft Edge、Mozilla Firefox、およびGoogle Chromeを使用している場合に、有効になります。ドメインパススルー認証は、クライアントが正常に検出された場合にのみ有効になります。
注:
HTML5クライアントがユーザーによって優先されているか、管理者によって強制されている場合、ドメインパススルー認証方式は有効になりません。
ブラウザーでStoreFront URLを開くと、[Receiverの検出] プロンプトが表示されます。
デバイスが管理対象である場合は、クライアント検出を無効にするのではなく、このプロンプトを無効にするようにグループポリシーを構成します。詳しくは、次のトピックを参照してください:
- Microsoft社ドキュメントの「URLAllowlist」。
- Google Chromeドキュメントの「URLAllowlist」。
注:
Citrix Workspaceアプリで使用されるプロトコルハンドラーは、「receiver:」です。許可されたURLの1つとしてこれを構成します。
以下のクライアント検出プロンプトにおけるStoreFront URLのプロンプト例のように、ユーザーはチェックボックスをオンにすることもできます。このチェックボックスをオンにすると、後続で起動するプロンプトも回避されます。
次の手順では、Citrix GatewayをIDプロバイダーとして設定する方法について説明します。
オンプレミスのCitrix GatewayでOAuth IDプロバイダーポリシーを作成する
OAuth IDプロバイダー認証ポリシーの作成には、次のタスクが含まれます:
- OAuth IDプロバイダープロファイルを作成する。
- OAuth IDプロバイダーポリシーを追加する。
- OAuth IDプロバイダーポリシーを仮想サーバーにバインドする。
- 証明書をグローバルにバインドする。
OAuth IDプロバイダープロファイルを作成する
-
CLIを使用してOAuth IDプロバイダープロファイルを作成するには、コマンドプロンプトに次のように入力します:
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 –certkey <> <!--NeedCopy-->
-
GUIを使用してOAuth IDプロバイダープロファイルを作成するには:
-
オンプレミスのCitrix Gateway管理ポータルにログインし、[Security] > [AAA - Application Traffic] > [Policies] > [Authentication] > [Advanced Policies] > [OAuth IDP] に移動します。
- [OAuth IDP] ページで、[Profiles] タブをクリックし、[Add] をクリックします。
-
OAuth IDプロバイダープロファイルを構成します。
注:
- [Citrix Cloud] > [IDおよびアクセス管理] > [認証] タブで、クライアントID、シークレット、およびリダイレクトURLの値をコピーして貼り付け、Citrix Cloudへの接続を確立します。
-
[発行者名] フィールドにGateway URLを正しく入力します。例:
https://GatewayFQDN.com
。 - また、クライアントIDをコピーして [オーディエンス] フィールドに貼り付けます。
- パスワードの送信:シングルサインオンをサポートするには、このオプションを有効にします。デフォルトでは、このオプションは無効になっています。
-
[Create Authentication OAuth IDP Profile] 画面で、次のパラメーターの値を設定し、[Create] をクリックします。
- Name - 認証プロファイルの名前。文字、数字、またはアンダースコア文字(_)で開始する必要があります。名前には、文字、数字、およびハイフン(-)、ピリオド(.)、番号記号(#)、スペース( )、アットマーク(@)、等号(=)、コロン(:)、アンダースコア文字のみ使用できます。プロファイル作成後は名前を変更できません。
- Client ID - サービスプロバイダーを識別する一意の文字列。承認サーバーは、このIDを使用してクライアントの構成を推測します。最大文字数:127。
- Client Secret - ユーザーと承認サーバーによって確立されたシークレット文字列。最大文字数:239。
- Redirect URL - コード/トークンを投稿する必要があるサービスプロバイダーのエンドポイント。
-
Issuer Name - トークンを受け入れるサーバーのID。最大文字数:127。例:
https://GatewayFQDN.com
。 - Audience - IDプロバイダーによって送信されたトークンの宛先。受信側はこのトークンを検証します。
- Skew Time - このオプションは、Citrix ADCが受信トークンで許可する許容クロックスキュー(分単位)を指定します。たとえば、スキュー時間が10の場合、トークンは(現在の時間 - 10)分から(現在の時間 + 10)分まで、つまり合計20分有効になります。デフォルト値:5。
- Default Authentication Group - このプロファイルがIDプロバイダーによって選択されたときにセッション内部グループリストに追加されるグループであり、これはnFactorフローで使用できます。これは、認証ポリシーの式(AAA.USER.IS_MEMBER_OF(“xxx”))で使用でき、証明書利用者に関連するnFactorフローを識別します。最大文字数:63。
このプロファイルのセッションにグループが追加され、ポリシーの評価が簡素化され、ポリシーのカスタマイズに役立ちます。このグループは、抽出されたグループに加えて認証が成功した場合に選択されるデフォルトのグループです。最大長:63。
-
OAuth IDプロバイダーポリシーを追加する
- [OAuth IDP]ページで、[Policies] をクリックし、[Add] をクリックします。
-
[Create Authentication OAuth IDP Policy] 画面で、次のパラメーターの値を設定し、[Create] をクリックします。
- Name - 認証ポリシーの名前。
- Action - 以前に作成されたプロファイルの名前。
- Log Action - 要求がこのポリシーに一致する場合に使用するメッセージログアクションの名前。必須フィールドではありません。
- Undefined-Result Action - ポリシー評価の結果が未定義(UNDEF)の場合に実行するアクション。必須フィールドではありません。
- Expression - ポリシーが特定の要求に応答するために使用するデフォルトの構文式。例:true。
- Comments - ポリシーに関するコメント。
注:
sendPasswordがON(デフォルトではOFF)に設定されている場合、ユーザーの資格情報は暗号化され、安全なチャネルを介してCitrix Cloudに渡されます。安全なチャネルを介してユーザー資格情報を渡すことで、起動時にCitrix Virtual Apps and DesktopsへのSSO(シングルサインオン)を有効にできます。
OAuth IDプロバイダーポリシーとLDAPポリシーを仮想認証サーバーにバインドする
次に、OAuth IDプロバイダーポリシーをオンプレミスのCitrix Gateway上の仮想認証サーバーにバインドする必要があります。
- オンプレミスのCitrix Gateway管理ポータルにログインし、[Configuration] > [Security] > [AAA - Application Traffic] > [Policies] > [Authentication] > [Advanced Policies] > [Actions] > [LDAP] に移動します。
- [LDAP Actions] 画面で、[Add] をクリックします。
-
[Create Authentication LDAP Server]画面で、次のパラメーターの値を設定し、[Create] をクリックします。
- Name - LDAPアクションの名前。
- ServerName/ServerIP - LDAPサーバーのFQDNまたはIPを入力します。
- [Security Type]、[Port]、[Server Type]、[Time-Out] で適切な値を選択します。
- [Authentication] がオンになっていることを確認してください。
-
Base DN - LDAP検索を開始するベース。例:
dc=aaa
、dc=local
。 -
Administrator Bind DN:LDAPサーバーへのバインドのユーザー名。例:
admin@aaa.local
。 - Administrator Password/Confirm Password:LDAPをバインドするためのパスワード。
- [Test Connection] をクリックして、設定をテストします。
- Server Logon Name Attribute:「sAMAccountName」を選択します。
- 他のフィールドは必須ではないため、必要に応じて構成できます。
- [Configuration] > [Security] > [AAA - Application Traffic] > [Policies] > [Authentication] > [Advanced Policies] > [Policy] に移動します。
- [Authentication Policies] 画面で [Add] をクリックします。
-
[Create Authentication Policy] ページで、次のパラメーターの値を設定し、[Create] をクリックします。
- Name - LDAP認証ポリシーの名前。
- Action Type - LDAPを選択します。
- Action - LDAPアクションを選択します。
- Expression - ポリシーが特定の要求に応答するために使用するデフォルトの構文式。例:true**。
証明書をVPNにグローバルにバインドする
証明書をVPNにグローバルにバインドするには、オンプレミスのCitrix GatewayへのCLIアクセスが必要です。Putty(または同様のもの)を使用して、SSHでオンプレミスのCitrix Gatewayにログインします。
- Puttyなどのコマンドラインユーティリティを起動します。
- SSHでオンプレミスのCitrix Gatewayにサインインします。
-
次のコマンドを入力します:
show vpn global
注:
証明書をバインドする必要はありません。
- オンプレミスのCitrix Gatewayで証明書を表示するには、次のコマンドを入力します:
show ssl certkey
-
適切な証明書を選択し、次のコマンドを入力して、証明書をVPNにグローバルにバインドします:
bind vpn global -certkey cert_key_name
ここでの「cert_key_name」は証明書の名前です。
-
次のコマンドを入力して、証明書がVPNにグローバルにバインドされているかどうかを確認します:
show vpn global
Citrix Gatewayの認証方法としてドメインパススルーを構成する
Citrix GatewayをIDプロバイダーとして設定し終えたら、次の手順を実行して、Citrix Gatewayの認証方法としてドメインパススルーを構成します。
ドメインパススルーが認証方法として設定されている場合、クライアントは資格情報ではなくKerberosチケットを使用して認証します。 Citrix Gatewayは、偽装とKerberosの制約付き委任(Kerberos Constrained Delegation:KCD)の両方をサポートしています。ただし、本記事ではKCD認証について説明します。この問題について詳しくは、CTX236593を参照してください。
ドメインパススルーの構成には、次のような手順があります:
- Kerberosの制約付き委任の構成
- クライアント構成
Kerberosの制約付き委任の構成
-
Active DirectoryにKCDユーザーを作成する
Kerberosは、ユーザーをリソースへと認証させるチケット付与システム上で機能し、クライアント、サーバー、およびキー配布センター(Key Distribution Center:KDC)が含まれます。
Kerberosが機能するには、クライアントがKDCにチケットを要求する必要があります。クライアントは、AS要求と呼ばれるチケットを要求する前に、まずユーザー名、パスワード、およびドメインを使用してKDCに対して認証する必要があります。
-
新しいユーザーをサービスプリンシパル名(Service Principal Name:SPN)に関連付けます。
GatewayのSPNは、クライアントが認証するために使用します。
- サービスプリンシパル名(SPN):サービスプリンシパル名(SPN)は、サービスインスタンスの一意の識別子です。Kerberos認証では、SPNを使用して、サービスインスタンスをサービスサインインアカウントに関連付けます。この機能により、クライアントがアカウント名を持っていなくても、クライアントアプリケーションはアカウントのサービス認証を要求できます。
SetSPNは、WindowsデバイスでSPNを管理するためのアプリケーションです。SetSPNを使用すると、SPN登録を表示、編集、および削除できます。
- Active Directoryサーバーで、コマンドプロンプトを開きます。
-
コマンドプロンプトで次のコマンドを入力します:
setspn –A http/<LB fqdn> <domain\Kerberos user>
-
KerberosユーザーのSPNを確認するには、次のコマンドを実行します:
setspn –l <Kerberos user>
setspn
コマンドの実行後、[Delegation]タブが表示されます。 -
[指定されたサービスへの委任でのみこのユーザーを信頼する] オプションと、[任意の認証プロトコルを使う] オプションを選択します。Webサーバーを追加し、HTTPサービスを選択します。
-
クライアントがGatewayのSPNを検索するためのDNSレコードを作成します:
Active DirectoryにTXT DNSレコードを追加します。
注:
名前は「_Kerberos」で始める必要があり、データはドメイン名である必要があります。FQDN(Fully qualified domain name:完全修飾ドメイン名)はKerberosを表示する必要があります。
。 Windowsのドメイン参加済みクライアントは「_kerberos.fqdn」を使用してチケットを要求します。たとえば、クライアントがcitrite.netに参加している場合、オペレーティングシステムは「*.citrite.net」のWebサイトのチケットを取得できます。ただし、Gatewayドメインがgateway.citrix.comのように外部にある場合、クライアントのオペレーティングシステムはKerberosチケットを取得できません。
そのため、クライアントが「_kerberos.gateway.citrix.com」を検索するのに役立つDNS TXTレコードを作成し、認証用のKerberosチケットを取得する必要があります。
-
認証要素としてKerberosを構成します。
-
NetScalerユーザーのKCDアカウントを作成します。ここでは、これを手動で行うことを選択しましたが、keytabファイルを作成する方法もあります。
注:
代替ドメイン(内部ドメインと外部ドメイン)を使用している場合は、サービスSPNを
HTTP/PublicFQDN.com@InternalDomain.ext
に設定する必要があります。- Realm - Kerberos領域。通常は内部ドメインのサフィックス。
- User Realm - これはユーザーの内部ドメインのサフィックスです。
- Enterprise Realm - これは、KDCがプリンシパル名ではなくEnterpriseユーザー名を想定する特定のKDC環境でのみ指定する必要があります。
- Delegated User - これは、前の手順のADで作成したKCDのNetScalerユーザーアカウントです。パスワードが正しいことを確認してください。
-
セッションプロファイルが正しいKCDアカウントを使用していることを確認します。セッションポリシーを認証、承認、および監査の仮想サーバーにバインドします。
-
認証ポリシーを認証、承認、および監査の仮想サーバーにバインドします。これらのポリシーは、クライアントからパスワードを取得しない認証、承認、および監査の方法を使用するため、KCDを使用する必要があります。ただし、UPN形式でユーザー名とドメイン情報を取得する必要があります。
注:
IPアドレスまたはEPAスキャンを使用してドメイン参加済みデバイスとドメイン非参加デバイスを区別し、認証の要素としてKerberosまたは通常のLDAPを使用できます。
-
クライアントを構成する
VDAにシングルサインオンできるようにするには、次の手順を実行します。
前提条件:
- ドメイン参加済みマシン
- SSO設定が有効になっているCitrix Workspace 2112.1以降
- 接続が保護されているかどうかを確認する信頼できるURL
- クライアントとADからKerberosを検証します。Kerberosチケットを取得するには、クライアントOSがADに接続している必要があります。
以下は、ブラウザーで信頼されるURLの一部です:
- Gateway URLまたはFQDN
- AD FQDN
- ブラウザーベースの起動からのSSO(シングルサインオン)のワークスペースURL。
-
Internet Explorer、Microsoft Edge、またはGoogle Chromeを使用している場合は、次の手順を実行します:
- ブラウザーを起動します。
- クライアントでローカルグループポリシーエディターを開きます。
- [コンピューターの構成] > [Windowsコンポーネント] > [Internet Explorer] > [インターネットコントロールパネル] > [セキュリティ] ページに移動します。
- サイトからゾーンへの割り当てリストを開き、リストされているすべてのURLを値1で追加します。
- (オプション)「
Gpupdate
」を実行してポリシーを適用します。
-
Mozilla Firefoxブラウザーを使用している場合は、次の手順を実行します:
- ブラウザーを開きます。
- 検索バーに「
about:config
」と入力します。 - リスクを受け入れて続行します。
- 検索フィールドに「negotiate」と入力します。
-
入力したデータのリストで、network.negotiate-auth.trusted-urisがドメイン値に設定されているかどうかを確認します。
これで、クライアント側の構成は完了です。
-
Citrix Workspaceアプリまたはブラウザーを使用してWorkspaceにログインします。
ドメイン参加済みデバイスでユーザー名またはパスワードの入力を求めてはいけません。
Kerberosのトラブルシューティング
注:
この検証手順を実行するには、ドメイン管理者である必要があります。
コマンドプロンプトまたはWindows PowerShellで、次のコマンドを実行して、SPNユーザーのKerberosチケット検証を確認します:
KLIST get host/FQDN of AD