次の方法で共有


AD FS での複合認証と AD DS 要求

Windows Server 2012 では、複合認証を導入することで Kerberos 認証が強化されています。 複合認証により、Kerberos Ticket-Granting Service (TGS) 要求に次の 2 つの ID を含めることができます。

  • ユーザーの身元
  • ユーザーのデバイスの ID。

Windows は、 Kerberos Flexible Authentication Secure Tunneling (FAST) または Kerberos 防御を拡張することで、複合認証を実現します。

AD FS 2012 以降のバージョンでは、Kerberos 認証チケットに存在する AD DS 発行のユーザーまたはデバイスの要求を使用できます。 以前のバージョンの AD FS では、要求エンジンは Kerberos からユーザーとグループのセキュリティ ID (SID) を読み取ることしかできませんでしたが、Kerberos チケットに含まれる要求情報を読み取ることはできませんでした。

Active Directory ドメイン サービス (AD DS) が発行したユーザー要求とデバイス要求を Active Directory フェデレーション サービス (AD FS) と共に使用することで、フェデレーション アプリケーションのアクセス制御を強化できます。

要求事項

  1. フェデレーション アプリケーションにアクセスするコンピューターは、 Windows 統合認証を使用して AD FS に対して認証する必要があります。

    • Windows 統合認証は、バックエンド AD FS サーバーに接続する場合にのみ使用できます。
    • コンピューターは、フェデレーション サービス名のバックエンド AD FS サーバーに到達できる必要があります
    • AD FS サーバーは、イントラネット設定でプライマリ認証方法として Windows 統合認証を提供する必要があります。
  2. クレーム、 複合認証、および Kerberos 防御に対する Kerberos クライアント サポート のポリシーは、複合認証によって保護されているフェデレーション アプリケーションにアクセスするすべてのコンピュータに適用する必要があります。 これは、単一フォレストまたはクロスフォレストのシナリオの場合に適用されます。

  3. AD FS サーバーを格納するドメインには、 要求の KDC サポート、複合認証、および Kerberos 防御 ポリシー設定がドメイン コントローラーに適用されている必要があります。

Windows Server 2012 R2 で AD FS を構成する手順

複合認証と要求を構成するには、次の手順を使用します

手順 1: 既定のドメイン コントローラー ポリシーで、信頼性情報、複合認証、Kerberos 防御の KDC サポートを有効にする

  1. サーバー マネージャーで、[ツール]、[ グループ ポリシー管理] の順に選択します。
  2. [Default Domain Controller Policy] まで移動し、右クリックして [edit] を選択します。 [Group Policy Management] ダイアログボックスの [Default Domain Policy] ページを示すスクリーンショット。
  3. グループ ポリシー管理エディター[コンピューターの構成] で、[ポリシー]、[管理用テンプレート]、[システム] の順に展開し、[KDC] を選択します。
  4. 右側のウィンドウで、[ 信頼性情報、複合認証、Kerberos 防御の KDC サポート] をダブルクリックします。 要求、複合認証、および Kerberos 防御設定の KDC サポートが強調表示されているグループ ポリシー管理エディターのスクリーンショット。
  5. 新しいダイアログ ウィンドウで、要求の KDC サポートを [有効] に設定します。
  6. [オプション] で、ドロップダウン メニューから [サポート対象 ] を選択し、[ 適用 ] と [OK] をクリックします。 要求、複合認証、および Kerberos 防御の KDC サポートのスクリーンショットで、[サポート対象] オプションが選択されているダイアログ ボックス。

手順 2: フェデレーション アプリケーションにアクセスするコンピューターで、信頼性情報、複合認証、および Kerberos 防御に対する Kerberos クライアント サポートを有効にする

  1. フェデレーション アプリケーションにアクセスするコンピューターに適用されたグループ ポリシーで、グループ ポリシー管理エディター[コンピューターの構成] で、[ポリシー]、[管理用テンプレート]、[システム] の順に展開し、[Kerberos] を選択します。
  2. [グループ ポリシー管理エディタ] ウィンドウの右側のウィンドウで、[信頼性情報、複合認証、および Kerberos 防御に対する Kerberos クライアント サポート] をダブルクリックします。
  3. 新しいダイアログ・ウィンドウで、「Kerberos クライアント・サポート」を 「使用可能 」に設定し、「 適用 」と 「OK」をクリックします。 要求、複合認証、および Kerberos 防御の KDC サポートのスクリーンショットで、[有効] オプションが選択されているダイアログ ボックス。
  4. グループ ポリシー管理エディターを閉じます。

手順 3: AD FS サーバーが更新されたことを確認します。

次の更新プログラムが AD FS サーバーにインストールされていることを確認する必要があります。

更新 説明
KB2919355 累積的なセキュリティ更新プログラム (KB2919355,KB2932046,KB2934018,KB2937592,KB2938439 を含む)
KB2959977 Server 2012 R2 の更新プログラム
ホットフィックス3052122 この更新プログラムは、Active Directory フェデレーション サービスでの複合 ID 要求のサポートを追加します。

ステップ 4: プライマリ認証プロバイダーを構成する

  1. [プライマリ認証プロバイダー] を [AD FS イントラネット設定の Windows 認証 ] に設定します。

  2. AD FS 管理の [認証ポリシー] で [ プライマリ認証 ] を選択し、[ グローバル設定 ] で [編集] をクリックします。

  3. [イントラネット] の [グローバル認証ポリシーの編集] で [Windows 認証] を選択します。

  4. [適用] と [OK] をクリックします。

    [グローバル認証ポリシーの編集] ダイアログ ボックスのスクリーンショットで、Windows 認証オプションが選択されています。

  5. PowerShell を使用すると、 Set-AdfsGlobalAuthenticationPolicy コマンドレットを使用できます。

Set-AdfsGlobalAuthenticationPolicy -PrimaryIntranetAuthenticationProvider 'WindowsAuthentication'

WID ベースのファームでは、PowerShell コマンドをプライマリ AD FS サーバーで実行する必要があります。 SQL ベースのファームでは、PowerShell コマンドは、ファームのメンバーである任意の AD FS サーバーで実行できます。

手順 5: 要求の説明を AD FS に追加する

  1. 次の要求の説明をファームに追加します。 この要求の説明は、AD FS 2012 R2 には既定では存在しないため、手動で追加する必要があります。

  2. AD FS 管理の [サービス] で、[要求の説明] を右クリックし、[要求の説明の追加] を選択します

  3. 要求の説明に次の情報を入力します

    • 表示名: 'Windows デバイス グループ'
    • クレームの説明: '<https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsdevicegroup>' `
  4. 両方のボックスにチェックを入れます。

  5. OK をクリックします。

    [Add a Claim Description] ダイアログボックスのスクリーンショット。

  6. PowerShell を使用すると、 Add-AdfsClaimDescription コマンドレットを使用できます。

    Add-AdfsClaimDescription -Name 'Windows device group' -ClaimType 'https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsdevicegroup' `
    -ShortName 'windowsdevicegroup' -IsAccepted $true -IsOffered $true -IsRequired $false -Notes 'The windows group SID of the device'
    

WID ベースのファームでは、PowerShell コマンドをプライマリ AD FS サーバーで実行する必要があります。 SQL ベースのファームでは、PowerShell コマンドは、ファームのメンバーである任意の AD FS サーバーで実行できます。

手順 6: msDS-SupportedEncryptionTypes 属性で複合認証ビットを有効にする

  1. Set-ADServiceAccount PowerShell コマンドレットを使用して、AD FS サービスを実行するように指定したアカウントの msDS-SupportedEncryptionTypes 属性で複合認証ビットを有効にします。

サービス アカウントを変更する場合は、 Set-ADUser -compoundIdentitySupported:$true Windows PowerShell コマンドレットを実行して、複合認証を手動で有効にする必要があります。

Set-ADServiceAccount -Identity “ADFS Service Account” -CompoundIdentitySupported:$true
  1. AD FS サービスを再起動します。

'CompoundIdentitySupported' を true に設定すると、新しいサーバー (2012R2/2016) に同じ gMSA をインストールすると、次のエラーで失敗します – Install-ADServiceAccount : サービス アカウントをインストールできません。エラー メッセージ: '指定されたコンテキストがターゲットと一致しませんでした。'

解決策: CompoundIdentitySupported を一時的に $false に設定します。 この手順により、AD FS は WindowsDeviceGroup 要求の発行を停止します。 Set-ADServiceAccount -Identity 'ADFS Service Account' -CompoundIdentitySupported:$false 新しいサーバーに gMSA をインストールし、CompoundIdentitySupported を $True に再度有効にします。 CompoundIdentitySupported を無効にしてから再度有効にする場合は、AD FS サービスを再起動する必要はありません。

手順 7: Active Directory の AD FS 要求プロバイダー信頼を更新する

  1. Active Directory の AD FS 要求プロバイダー信頼を更新して、'WindowsDeviceGroup' 要求の次の 'パススルー' 要求規則を含めます。
  2. AD FS 管理[要求プロバイダーの信頼] をクリックし、右側のウィンドウで [Active Directory] を右クリックして [要求規則の編集] を選択します。
  3. [Edit Claim Rules for Active Director] で、[Add Rule] をクリックします。
  4. 変換要求規則の追加ウィザード、[入力方向の要求をパススルーまたはフィルタ処理] を選択し、[次へ] をクリックします。
  5. 表示名を追加し、 [入力方向の要求の種類] ドロップダウンから [Windows デバイス グループ] を選択します。
  6. [完了] をクリックします。 [適用] と [OK] をクリックします。 AD FS、Active Directory の要求規則の編集、および上記のワークフローを示す矢印と吹き出しを含むダイアログ ボックス - Windows デバイス グループのスクリーンショット。

手順 8: 'WindowsDeviceGroup' 要求が予期される証明書利用者に、同様の 'Pass-through' または 'Transform' 要求規則を追加します。

  1. AD FS 管理で [証明書利用者信頼] をクリックし、右側のウィンドウで RP を右クリックして [要求規則の編集] を選択します。
  2. 「発行変換ルール」で、「ルールの追加」をクリックします。
  3. 変換要求規則の追加ウィザード、[入力方向の要求をパススルーまたはフィルタ処理] を選択し、[次へ] をクリックします。
  4. 表示名を追加し、 [入力方向の要求の種類] ドロップダウンから [Windows デバイス グループ] を選択します。
  5. [完了] をクリックします。 [適用] と [OK] をクリックします。 AD FS、myclaims.fedhome.in の要求ルールの編集、および上記のワークフローを示す矢印と吹き出しを含む [ルールの編集 - Windows デバイス グループ] ダイアログ ボックスのスクリーンショット。

Windows Server 2016 で AD FS を構成する手順

次に、Windows Server 2016 の AD FS で複合認証を構成する手順について詳しく説明します。

手順 1: 既定のドメイン コントローラー ポリシーで、信頼性情報、複合認証、Kerberos 防御の KDC サポートを有効にする

  1. サーバー マネージャーで、[ツール]、[ グループ ポリシー管理] の順に選択します。
  2. [Default Domain Controller Policy] まで移動し、右クリックして [edit] を選択します。
  3. グループ ポリシー管理エディター[コンピューターの構成] で、[ポリシー]、[管理用テンプレート]、[システム] の順に展開し、[KDC] を選択します。
  4. 右側のウィンドウで、[ 信頼性情報、複合認証、Kerberos 防御の KDC サポート] をダブルクリックします。
  5. 新しいダイアログ ウィンドウで、要求の KDC サポートを [有効] に設定します。
  6. [オプション] で、ドロップダウン メニューから [サポート対象 ] を選択し、[ 適用 ] と [OK] をクリックします。

手順 2: フェデレーション アプリケーションにアクセスするコンピューターで、信頼性情報、複合認証、および Kerberos 防御に対する Kerberos クライアント サポートを有効にする

  1. フェデレーション アプリケーションにアクセスするコンピューターに適用されたグループ ポリシーで、グループ ポリシー管理エディター[コンピューターの構成] で、[ポリシー]、[管理用テンプレート]、[システム] の順に展開し、[Kerberos] を選択します。
  2. [グループ ポリシー管理エディタ] ウィンドウの右側のウィンドウで、[信頼性情報、複合認証、および Kerberos 防御に対する Kerberos クライアント サポート] をダブルクリックします。
  3. 新しいダイアログ・ウィンドウで、「Kerberos クライアント・サポート」を 「使用可能 」に設定し、「 適用 」と 「OK」をクリックします。
  4. グループ ポリシー管理エディターを閉じます。

ステップ 3: プライマリ認証プロバイダーを構成する

  1. [プライマリ認証プロバイダー] を [AD FS イントラネット設定の Windows 認証 ] に設定します。
  2. AD FS 管理の [認証ポリシー] で [ プライマリ認証 ] を選択し、[ グローバル設定 ] で [編集] をクリックします。
  3. [イントラネット] の [グローバル認証ポリシーの編集] で [Windows 認証] を選択します。
  4. [適用] と [OK] をクリックします。
  5. PowerShell を使用すると、 Set-AdfsGlobalAuthenticationPolicy コマンドレットを使用できます。
Set-AdfsGlobalAuthenticationPolicy -PrimaryIntranetAuthenticationProvider 'WindowsAuthentication'

WID ベースのファームでは、PowerShell コマンドをプライマリ AD FS サーバーで実行する必要があります。 SQL ベースのファームでは、PowerShell コマンドは、ファームのメンバーである任意の AD FS サーバーで実行できます。

手順 4: msDS-SupportedEncryptionTypes 属性で複合認証ビットを有効にする

  1. Set-ADServiceAccount PowerShell コマンドレットを使用して、AD FS サービスを実行するように指定したアカウントの msDS-SupportedEncryptionTypes 属性で複合認証ビットを有効にします。

サービス アカウントを変更する場合は、 Set-ADUser -compoundIdentitySupported:$true Windows PowerShell コマンドレットを実行して、複合認証を手動で有効にする必要があります。

Set-ADServiceAccount -Identity “ADFS Service Account” -CompoundIdentitySupported:$true
  1. AD FS サービスを再起動します。

'CompoundIdentitySupported' を true に設定すると、新しいサーバー (2012R2/2016) に同じ gMSA をインストールすると、次のエラーで失敗します – Install-ADServiceAccount : サービス アカウントをインストールできません。エラー メッセージ: '指定されたコンテキストがターゲットと一致しませんでした。'

解決策: CompoundIdentitySupported を一時的に $false に設定します。 この手順により、AD FS は WindowsDeviceGroup 要求の発行を停止します。 Set-ADServiceAccount -Identity 'ADFS Service Account' -CompoundIdentitySupported:$false 新しいサーバーに gMSA をインストールし、CompoundIdentitySupported を $True に再度有効にします。 CompoundIdentitySupported を無効にしてから再度有効にする場合は、AD FS サービスを再起動する必要はありません。

手順 5: Active Directory の AD FS 要求プロバイダー信頼を更新する

  1. Active Directory の AD FS 要求プロバイダー信頼を更新して、'WindowsDeviceGroup' 要求の次の 'パススルー' 要求規則を含めます。
  2. AD FS 管理[要求プロバイダーの信頼] をクリックし、右側のウィンドウで [Active Directory] を右クリックして [要求規則の編集] を選択します。
  3. [Edit Claim Rules for Active Director] で、[Add Rule] をクリックします。
  4. 変換要求規則の追加ウィザード、[入力方向の要求をパススルーまたはフィルタ処理] を選択し、[次へ] をクリックします。
  5. 表示名を追加し、 [入力方向の要求の種類] ドロップダウンから [Windows デバイス グループ] を選択します。
  6. [完了] をクリックします。 [適用] と [OK] をクリックします。

手順 6: 'WindowsDeviceGroup' 要求が想定される証明書利用者に、同様の 'Pass-through' または 'Transform' 要求規則を追加します。

  1. AD FS 管理で [証明書利用者信頼] をクリックし、右側のウィンドウで RP を右クリックして [要求規則の編集] を選択します。
  2. 「発行変換ルール」で、「ルールの追加」をクリックします。
  3. 変換要求規則の追加ウィザード、[入力方向の要求をパススルーまたはフィルタ処理] を選択し、[次へ] をクリックします。
  4. 表示名を追加し、 [入力方向の要求の種類] ドロップダウンから [Windows デバイス グループ] を選択します。
  5. [完了] をクリックします。 [適用] と [OK] をクリックします。

検証

'WindowsDeviceGroup' 要求のリリースを検証するには、.Net 4.6 を使用してテスト用の要求対応アプリケーションを作成します。 WIF SDK 4.0 を使用。 AD FS でアプリケーションを証明書利用者として構成し、上記の手順で指定した要求ルールで更新します。 AD FS の Windows 統合認証プロバイダーを使用してアプリケーションに対して認証を行うと、次の要求が作成されます。 検証

コンピュータ/デバイスのクレームは、より高度なアクセス制御のために消費できるようになりました。

たとえば、次の AdditionalAuthenticationRules は、認証ユーザーがセキュリティ グループ "-1-5-21-2134745077-1211275016-3050530490-1117" のメンバーではなく、コンピューター (ユーザーの認証元) がセキュリティ グループ "S-1-5-21-2134745077-1211275016-3050530490-1115 (WindowsDeviceGroup)" のメンバーでない場合、AD FS に MFA を呼び出すように指示します。

ただし、上記の条件のいずれかが満たされている場合は、MFA を呼び出さないでください。

'NOT EXISTS([Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsdevicegroup", Value =~ "S-1-5-21-2134745077-1211275016-3050530490-1115"])
&& NOT EXISTS([Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value =~ "S-1-5-21-2134745077-1211275016-3050530490-1117"])
=> issue(Type = "https://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", Value = "https://schemas.microsoft.com/claims/multipleauthn");'