ADC

SAML IdP としての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ビルド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 を正規表現と一致させたい場合は、次の表現を使用してください。

      –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と異なり、ユーザーがNetScalerログインページに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://<netscaler-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 IdP としてのNetScaler