ADC

SAML IDプロバイダーとしてのNetScaler

SAML IdP (ID プロバイダー) は、顧客ネットワークにデプロイされる SAML エンティティです。IdP は SAML SP からリクエストを受信し、認証情報を入力する必要があるログオンページにユーザーをリダイレクトします。IdP は、Active Directory(LDAP などの外部認証サーバ)でこれらの認証情報を認証し、SP に送信される SAML アサーションを生成します。

SPはトークンを検証し、要求された保護されたアプリケーションへのアクセス権をユーザーに付与します。

NetScalerアプライアンスがIdPとして構成されている場合、すべての要求は、関連するSAML IdPプロファイルに関連付けられた認証仮想サーバーによって受信されます。

NetScalerアプライアンスは、アプライアンス上または任意の外部SAML SP上にSAML SPが構成されている展開環境で、IdPとして使用できます。

SAML IdPとして使用する場合、NetScalerアプライアンスは次のようになります。

  • 従来のログオンでサポートされるすべての認証方法をサポートします。

  • アサーションにデジタル署名します。

  • 単一要素認証と 2 要素認証をサポートします。SAML をセカンダリ認証メカニズムとして設定しないでください。

  • SAML SP のパブリックキーを使用してアサーションを暗号化できます。これは、アサーションに機密情報が含まれている場合に推奨されます。

  • SAML SP からのデジタル署名された要求のみを受け入れるように設定できます。

  • ネゴシエート、NTLM、証明書の 401 ベースの認証メカニズムを使用して SAML IdP にログオンできます。

  • nameID 属性のほかに 16 個の属性を送信するように設定できます。属性は適切な認証サーバから抽出する必要があります。それぞれについて、SAML IdP プロファイルで名前、式、形式、およびフレンドリ名を指定できます。

  • NetScalerアプライアンスが複数のSAML SPのSAML IdPとして構成されている場合、ユーザーは毎回明示的に認証しなくても、異なるSP上のアプリケーションにアクセスできます。NetScalerアプライアンスは最初の認証用にセッションCookieを作成し、その後のすべての要求ではこのCookieを認証に使用します。

  • SAML アサーションで複数値属性を送信できます。

  • ポストバインディングとリダイレクトバインディングをサポートします。アーティファクトバインディングのサポートは、NetScalerリリース13.0 Build 36.27で導入されました。

  • SAML アサーションの有効性を指定できます。

    NetScaler SAML IdP とピア SAML SP のシステム時刻が同期していない場合、いずれかの当事者によってメッセージが無効になることがあります。このような状況を回避するために、アサーションが有効な期間を設定できるようになりました。

    この時間を「スキュータイム」と呼び、メッセージを受け入れる必要がある分数を指定します。スキュータイムは SAML SP と SAML IdP で設定できます。

  • IdP で事前設定されている、または IdP によって信頼されている SAML SP に対してのみアサーションを提供するように設定できます。この設定では、SAML IdP には、関連する SAML SP のサービスプロバイダー ID(または発行者名)が必要です。

    • 先に進む前に、LDAP 認証仮想サーバーにバインドされた認証ポリシーがあることを確認してください。

    • 必要な属性を取得するように LDAP アクションを設定する方法の詳細については、「LDAP 認証での名前と値の属性のサポート」を参照してください。

CLIを使用してNetScalerアプライアンスをSAML IdPとして構成します

  1. SAML IdP プロファイルを設定します。

    SiteMinder を SP として使用して、NetScaler アプライアンスをIdP として追加する。

    add authentication samlIdPProfile samlIDPProf1 -samlSPCertName siteminder-cert -encryptAssertion ON -metadataUrl https://samlidp.example.com/metadata -samlIdPCertName ns-cert -assertionConsumerServiceURL https://example.com/cgi/samlauth -rejectUnsignedRequests ON -signatureAlg RSA-SHA256 -digestMethod SHA256 –acsUrlRule AAA.LOGIN.SAML_REQ_ACS_URL.REGEX_MATCH(re#^https://example\.com/cgi/samlauth$#)

  2. SAML IdP プロファイルを設定します。次の例では、IdP セッションには「UserPrincipalName」属性が含まれています。

    set samlidPProfile SAML-IDP-Profile -Attribute1 "userPrincipalName" -Attribute1Expr "AAA.USER.ATTRIBUTE(\"userPrincipalName\")"

    注意事項

    • SAML IdP プロファイルで、この IdP に適用可能なサービスプロバイダー URL のリストの式をとる acsurlRule を設定します。この式は、使用している SP によって異なります。NetScaler が SP として構成されている場合、ACS URLはhttps://<SP-domain_name>/cgi/samlauthです 。一致するために、式に完全なURLを設定することをお勧めします。

    • SAML IdP で ACS URL を 1 つだけ許可する場合は、次のコマンドを使用します。

      次の CLI 例では https://testlb.aaa.localをACS URLとして使用しています。

       set samlidpprofile SAML_IDP_profile -acsurlrule  "AAA.LOGIN.SAML_REQ_ACS_URL.eq("https://testlb.aaa.local")"
       <!--NeedCopy-->
      
    • SAML IdP で一連の ACS URL を許可するには、次のコマンドを使用します。

      次の CLI 例では、{"https://testlb.aaa.local", "https://testav.aaa.local"}をACS URLのセットとして使用しています。

       add patset saml_acsUrl
       bind patset saml_acsUrl https://testlb.aaa.local
       bind patset saml_acsUrl https://testav.aaa.local
       set samlidpprofile SAML_IDP_profile -acsurlrule  "AAA.LOGIN.SAML_REQ_ACS_URL.contains_any("saml_acsUrl")"
       <!--NeedCopy-->
      
    • SAML IdP に ACS URL を正規表現と一致させたい場合は、次の表現を使用してください。

      –acsUrlRule AAA.LOGIN.SAML_REQ_ACS_URL.REGEX_MATCH(re#^https://example.com/cgi/samlauth$#)

      上記の式により、ACS URLがhttps://example.com/cgi/samlauthと一致することが保証されます。正規表現の先頭に「^」記号が付いていると、NetScalerでは「https」より前は何も許可されません。正規表現の末尾に「$」記号が付いていると、NetScalerは「samlauth」の後に何も許可しないようになります。

      式が-acsUrlRule AAA.LOGIN.SAML_REQ_ACS_URL.REGEX_MATCH(re#https://example.com/cgi/#)の場合、SAML IdP は次の例に示すように任意の ACS URL を許可します。

      • https://example.com/cgi/samlauth

      • abcdhttps://example.com/cgi/xyz

      • https://example.com/cgi/abcde

    • SAML は RSA 証明書のみをサポートします。HSM、FIPS などの他の証明書はサポートされていません。

    コマンドの詳細については、「https://developer-docs.citrix.com/projects/citrix-adc-command-reference/en/latest/authentication/authentication-samlAction」および「https://support.citrix.com/article/CTX316577」を参照してください。

    • IdPログアウトURLがリダイレクトURLと異なり、ユーザーがCitrix ADCのログインページに2分以上いると、ユーザーが認証しようとするとサーバーエラーHTTP/1.1 Internal Server Error 43549が表示されます。NetScaler ログには、受信ログアウト後のリダイレクトURLがユーザーの許可リストに登録されているログアウトリダイレクトURLに含まれていないことを示すメッセージが表示されます。

      この問題を解決するには、以下の例のようにパターンセットをバインドします。

      bind patset ns_aaa_oauthidp_logout_redirect_uris "https://FQDN and path to the logout url"

    • 認証仮想サーバーが SAML SP として構成されている場合、SAML IdP プロファイルで使用する必要があるメタデータ URL は https://<citrix-adc-saml-sp-fqdn>/metadata/samlsp/saml_sp_actです。例:

      add authentication samlIdPProfile SAML_IDP_profile -samlIdPCertName aaa_local -assertionConsumerServiceURL "https://ksav.ksaaa.local/cgi/samlauth" -samlIssuerName "https://ksidp1.aaa.local/saml/login" -rejectUnsignedRequests OFF -serviceProviderID kslb.ksaaa.local -signAssertion NONE -SPLogoutUrl "https://ksav.ksaaa.local/cgi/tmlogout" -logoutBinding REDIRECT -metadataUrl "https://ksav.ksaaa.local/metadata/samlsp/saml_sp_act" -metadataRefreshInterval 1

  3. SAML 認証ポリシーを設定し、SAML IdP プロファイルをポリシーのアクションとして関連付けます。

    add authentication samlIdPPolicy samlIDPPol1 -rule true -action samlIDPProf1

    注:

    ポリシー名に 1 つ以上のスペースが含まれる場合は、名前を二重引用符または一重引用符で囲みます (「my policy」や「my policy」など)。

  4. 認証仮想サーバにポリシーをバインドします。

    bind authentication vserver saml-auth-vserver -policy samlIDPPol1 -priority 100

    コマンドの詳細については、https://developer-docs.citrix.com/projects/citrix-adc-command-reference/en/latest/authentication/authentication-samlIdPProfileを参照してください。

GUI を使用して NetScaler アプライアンスを SAML IdP として構成します

  1. SAML IdP プロファイルを設定します。このプロファイルは、SP からの受信認証リクエストを検証し、SP に送信する前にアサーションを作成して署名するために使用されます。

    [ セキュリティ] > [AAA-アプリケーショントラフィック] > [ポリシー] > [認証詳細ポリシー] > [SAML IDP ポリシー] に移動します。

    [ サーバー] を選択し、[ 追加] をクリックし、次のパラメーターの値を入力して、[ 作成] をクリックします。

    パラメータの説明:

    • 名前-新しい SAML シングルサインオンプロファイルの名前。

    • SAML IDPメタデータのエクスポート-SAML IdPプロファイルのメタデータをNetScaler Gateway VPN仮想サーバーにエクスポートする場合は、このリンクをクリックします。

    • メタデータのインポート-このオプションは SAML IdP メタデータをインポートします。このオプションは、デフォルトで有効になっています。

    • アサーションコンシューマーサービス URL-アサーションの送信先の URL。

    • サービスプロバイダログアウト URL-ログアウトメッセージの送信先となる SP エンドポイント。

    • ログアウトバインディング — SAML ログアウトメッセージの転送メカニズムを指定します。使用可能なオプションはPOSTとリダイレクトです。

    • SAML SP メタデータ URL — SAML IdP メタデータを取得するために使用される URL。

      注:

      SAML SP メタデータ URL を設定すると、次のパラメータが SAML IdP プロファイルから取得され、SAML SP 設定に自動入力されます。

      • アサーションコンシューマーサービス URL
      • サービスプロバイダログアウト URL
      • SP 証明書名
      • ログアウトバインディング
      • SAML バインディング
      • 署名アサーション
    • メタデータの更新間隔 (分)-指定されたメタデータ URL からメタデータを取得する間隔 (分単位)。デフォルトの時間間隔は 3600 分です。

    • アサーションコンシューマーサービス URL ルール-SAML SP からの許可される ACS URL を定義する式。つまり、SAML 要求に不正な ACS URL を挿入する攻撃を防ぐために、ACS URL を許可リストに登録します。

    • アサーションコンシューマーサービス URL-認証されたユーザーがリダイレクトされる URL。

    • IdP 証明書名-認証ページに使用される証明書とキーのペア。

    • SP 証明書名-サービスプロバイダの証明書このシナリオでは、キーは必要ありません。

    • Sign Assertion- クライアントをサービスプロバイダにリダイレクトするときに、アサーションと応答に署名するオプション。

    • 発行者名-IdP によって発行された SAML アサーションに含まれる文字列値。

    • サービスプロバイダー ID:サービスプロバイダーの識別に役立つように SP 上で指定される一意の ID。ID は何でも構いませんが、URL である必要はありません。ただし、ID は SP プロファイルと IdP プロファイルの両方で同じでなければなりません。

    • デフォルト認証グループ-抽出されたグループに加えて、認証が成功したときに選択されるデフォルトグループ。このグループは、管理者が nFactor フローを使用して中継側に適した構成を決定する場合に便利です。たとえば、認証ポリシーを設定する場合、次の式の一部としてデフォルトのグループ名を指定できます。

      AAA.USER.IS_MEMBER_OF("Default Authentication Group name").

    • 署名されていないリクエストを拒否-SP 証明書で署名されたアサーションのみが受け付けられるように指定できるオプション。

    • オーディエンス-IdP によってアサーションが送信されるオーディエンス。これは通常、SP を表すエンティティ名または URL です。

    • スキュー時間(分)-スキュー時間(分)-このオプションは、NetScaler サービスプロバイダーが受信アサーションで許可するクロックスキューを分単位で指定します。たとえば、16:00 にスキュー時間を 10 分に設定した場合、SAML アサーションは 15:50 から 16:10(合計 20 分)まで有効です。デフォルトのスキュー時間は 5 分です。

    • NAME ID 形式-アサーションで送信される名前識別子の形式。

    • 名前 ID 式-アサーションで送信される名前識別子を取得するために評価される式。

    • アサーションへの署名-IdP から送信されたアサーションの一部に署名するオプション。使用可能なオプションは、[なし]、[アサーション]、[応答]、または [両方] です。

    • Signature Algorithm:IdP と SP の間のアサーションの署名と検証に使用されるアルゴリズム。IdP プロファイルと SP プロファイルで同じである必要があります。

    • Digest Method:IdP と SP の間のアサーションの整合性を検証するために使用されるアルゴリズム。IdP プロファイルと SP プロファイルで同じである必要があります。

    • SAML バインディング-SP と IdP の間で SAML リクエスタとレスポンダのメッセージを転送するために使用されるメカニズム。NetScalerがSPとして機能する場合、ポスト、リダイレクト、およびアーティファクトバインディングをサポートします。デフォルトのバインド方法は POST です。SAML IdP ポリシーを認証仮想サーバーに関連付けます。Artifact バインディングでは、SP と IdP のトランスポートメカニズムが同じである必要があります。

    • 属性1-値を抽出して属性1として保存する必要があるSAMLアサーション内の属性の名前。同様のパターンが残りの属性にも当てはまります。

    • 属性1Expr-評価されて属性1の値を取得する式。

    • Attribute1FriendlyName-SAML アサーションで送信する必要がある属性 1 の名前。

    • 属性 1 形式-SAML アサーションで送信される属性 1 のフォーマット。

  2. SAML 認証ポリシーを設定し、SAML IdP プロファイルをポリシーのアクションとして関連付けます。

    [ セキュリティ] > [AAA-アプリケーショントラフィック] > [ポリシー] > [認証詳細ポリシー] > [SAML IDP ポリシー] に移動します。

    [ ポリシー] を選択し、[ 追加] をクリックし、次のパラメータの値を入力して、[ 作成] をクリックします。

    パラメータの説明:

    • 名前-SAML IdP 認証ポリシーの名前。

    • アクション-このポリシーに一致するリクエストまたは接続に適用する SAML IdP プロファイルの名前。

    • ログアクション -リクエストがこのポリシーに一致する場合に使用するメッセージログアクションの名前。ドロップダウンリストからログアクションを選択するか、[追加] をクリックしてログアクションを作成します。

    • 未定義結果アクション-ポリシー評価の結果が未定義の場合に実行するアクション。未定義のイベントは内部エラー状態を示します。ビルトインアクションのみを使用できます。

    • コメント -このポリシーに関する情報を保存するための任意のコメント。

  3. SAML IdP ポリシーを認証仮想サーバーに関連付けます。

    [ セキュリティ] > [AAA-アプリケーショントラフィック] > [仮想サーバー] に移動し、SAML IdP ポリシーを認証仮想サーバーにバインドします。

SAML IDプロバイダーとしてのNetScaler