SAML認証の構成

セキュリティーアサーションマークアップ言語 (SAML) は、ID プロバイダー (IdP) とサービスプロバイダーの間で認証と承認を交換するための XML ベースの標準です。Citrix Gateway は、SAML認証をサポートしています。

SAML 認証を構成するときは、次の設定を作成します。

  • IdP 証明書名。IdP の秘密鍵に対応する公開鍵です。
  • リダイレクト URL。これは、認証 IdP の URL です。認証されていないユーザーは、この URL にリダイレクトされます。
  • [ユーザフィールド]: IdP が Subject タグの NameIdentifier タグとは異なる形式でユーザー名を送信する場合、このフィールドを使用してユーザー名を抽出できます。これはオプションの設定です。
  • 署名証明書名。これは、IdPへの認証要求に署名するために使用されるCitrix Gateway サーバーの秘密鍵です。証明書名を設定しない場合、アサーションは署名なしに送信されるか、認証要求は拒否されます。
  • SAML 発行者名。この値は、認証要求が送信されるときに使用されます。発行者フィールドには、アサーションが送信される権限を示す一意の名前が必要です。これはオプションのフィールドです。
  • デフォルトの認証グループ。これは、ユーザの認証元となる認証サーバ上のグループです。
  • 2 つのファクター。この設定では、2 要素認証を有効または無効にします。
  • 署名されていないアサーションを拒否します。有効にすると、署名証明書名が構成されていない場合、Citrix Gateway はユーザー認証を拒否します。

Citrix Gateway は、HTTP POSTバインディングをサポートしています。このバインディングでは、送信側は、必要な情報を持つフォーム自動投稿を含む200 OKでユーザーに応答します。具体的には、そのデフォルトフォームには、フォームがリクエストかレスポンスかに応じて、SAMLRequest と SAMLResponse という 2 つの非表示フィールドが含まれている必要があります。フォームには RelayState も含まれています。RelayState は、証明書利用者によって処理されない任意の情報を送信するために送信側によって使用される状態または情報です。証明書利用者は、送信側がRelayStateとともにアサーションを取得したときに、送信側が次に何をすべきかを知るように、単に情報を送り返します。RelayStateを暗号化または難読化することをお勧めします。

Active Directory フェデレーションサービス 2.0 の構成

フェデレーションサーバーの役割で使用する任意の Windows Server 2008 コンピューターまたは Windows Server 2012 コンピューターで、Active Directory フェデレーションサービス (AD FS) 2.0 を構成できます。Citrix Gateway で動作するように AD FS サーバーを構成する場合は、証明書利用者の信頼ウィザードを使用して、次のパラメーターを構成する必要があります。

Windows Server 2008パラメーター:

  • 証明書利用者の信頼。Citrix Gateway のメタデータファイルの場所(https://vserver.fqdn.com/ns.metadata.xmlなど)を指定します。ここで、vserver.fqdn.comはCitrix Gateway仮想サーバーの完全修飾ドメイン名(FQDN)です。FQDN は、仮想サーバーにバインドされたサーバー証明書にあります。
  • 承認規則。証明書利用者へのアクセスをユーザーに許可または拒否できます。

サーバー 2012 のパラメーター:

  • 証明書利用者の信頼。Citrix Gateway のメタデータファイルの場所(https://vserver.fqdn.com/ns.metadata.xmlなど)を指定します。ここで、vserver.fqdn.comはCitrix Gateway仮想サーバーの完全修飾ドメイン名(FQDN)です。FQDN は、仮想サーバーにバインドされたサーバー証明書にあります。

  • AD FS プロファイル。AD FS プロファイルを選択します。

  • 証明書。Citrix Gateway は暗号化をサポートしていません。証明書を選択する必要はありません。

  • SAML 2.0 WebSSO プロトコルのサポートを有効にします。これにより、SAML 2.0 SSO のサポートが有効になります。Citrix Gateway 仮想サーバーのURL(https:netScaler.virtualServerName.com/cgi/samlauthなど)を指定します。

    このURLは、Citrix Gateway アプライアンス上のアサーションコンシューマーサービスのURLです。これは定数パラメーターであり、Citrix Gateway はこのURLに対するSAML応答を想定しています。

  • 証明書利用者の信頼識別子。「Citrix Gateway」という名前を入力します。これは、証明書利用者を識別する URL です。たとえば、https://netscalerGateway.virtualServerName.com/adfs/services/trust

  • 承認規則。証明書利用者へのアクセスをユーザーに許可または拒否できます。

  • 要求ルールを構成します。発行変換規則を使用して LDAP 属性の値を構成し、「要求として LDAP 属性を送信」テンプレートを使用できます。次に、次の情報を含む LDAP 設定を構成します。

    • メール アドレス
    • sAMAccountName
    • ユーザー プリンシパル名 (UPN)
    • memberOf
  • 証明書の署名。署名検証証明書を指定するには、[中継者のプロパティ] を選択して証明書を追加します。

    署名証明書が 2048 ビット未満の場合は、警告メッセージが表示されます。警告を無視して続行できます。テスト展開を設定している場合は、リレーパーティで証明書失効リスト(CRL)を無効にします。チェックを無効にしないと、AD FS は CRL で証明書の検証を試みます。

    CRL を無効にするには、次のコマンドを実行します。Set-ADFWRelayingPartyTrust - SigningCertficateRevocatonCheck None-TargetName NetScaler

設定を構成したら、中継パーティの信頼ウィザードを完了する前に、証明書利用者のデータを確認します。Citrix Gateway 仮想サーバー証明書は、https://vserver.fqdn.com/cgi/samlauthなどのエンドポイントURLで確認します。

中継パーティの信頼ウィザードでの設定の構成が完了したら、構成された信頼を選択し、プロパティを編集します。次のことを行う必要があります。

  • セキュアハッシュアルゴリズムを SHA-1 に設定します。

    注:Citrix ではSHA-1のみがサポートされています。

  • 暗号化証明書を削除します。暗号化されたアサーションはサポートされていません。

  • 以下を含む要求ルールを編集します。

    • 変換規則の選択
    • 要求ルールの追加
    • 要求規則テンプレートの選択:要求として LDAP 属性を送信する
    • 名前をつける
    • 属性ストアの選択:Active Directory
    • <Active Directory parameters>LDAP 属性を選択:
    • 「名前 ID」として「外出要求ルール」を選択します。

    注:属性名 XML タグはサポートされていません。

  • シングルサインオフのログアウト URL を設定します。要求ルールは [ログアウト URL の送信] です。カスタムルールは、次のようになります。

    pre codeblock => issue(Type = "logoutURL", Value = "https://<adfs.fqdn.com>/adfs/ls/", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified");

AD FS の設定を構成したら、AD FS 署名証明書をダウンロードし、Citrix Gateway で証明書キーを作成します。その後、証明書とキーを使用して、Citrix Gateway でSAML認証を構成できます。

SAML 2 要素認証の設定

SAML の 2 要素認証を設定できます。LDAP 認証を使用して SAML 認証を構成する場合は、次のガイドラインに従ってください。

  • SAML がプライマリ認証タイプである場合は、LDAP ポリシーで認証を無効にし、グループ抽出を設定します。次に、LDAP ポリシーをセカンダリ認証タイプとしてバインドします。
  • SAML 認証では、パスワードは使用されず、ユーザー名のみが使用されます。また、SAML 認証は、認証が成功した場合にのみユーザーに通知します。SAML 認証が失敗した場合、ユーザーには通知されません。失敗応答は送信されないため、SAML はカスケードの最後のポリシーか、唯一のポリシーである必要があります。
  • 不透明な文字列ではなく、実際のユーザー名を構成することをお勧めします。
  • SAML をセカンダリ認証タイプとしてバインドすることはできません。