AD FS での複合認証と AD DS クレーム
Windows Server 2012 では、複合認証の導入により Kerberos 認証が強化されています。 複合認証を使用すると、Kerberos Ticket-Granting Service (TGS) の要求に、次の 2 つの ID を含めることができます。
- ユーザーの ID
- ユーザーのデバイスの ID
Windows では、Kerberos のフレキシブル認証セキュア トンネリング (FAST)、つまり、Kerberos 防御を拡張して複合認証を実現しています。
AD FS 2012 以降のバージョンでは、Kerberos 認証チケットに存在する、AD DS で発行されたユーザーまたはデバイスの信頼性情報を使用できます。 以前のバージョンの AD FS では、信頼性情報エンジンが、ユーザーおよびグループのセキュリティ ID (SID) のみを Kerberos から読み取ることができ、Kerberos チケットに含まれる信頼性情報を読み取ることはできませんでした。
Active Directory Domain Services (AD DS) で発行された、ユーザーとデバイスの信頼性情報を、Active Directory フェデレーション サービス (AD FS) と共に使用して、フェデレーション アプリケーションの高度なアクセス制御を有効にすることができます。
必要条件
フェデレーション アプリケーションにアクセスするコンピューターは、Windows 統合認証を使用して AD FS に対して認証を行う必要があります。
- Windows 統合認証は、バックエンド AD FS サーバーに接続しているときにのみ使用できます。
- コンピューターは、フェデレーション サービス名のバックエンド AD FS サーバーに接続できる必要があります。
- AD FS サーバーは、イントラネット設定でプライマリ認証方法として Windows 統合認証を提供する必要があります。
ポリシー [Kerberos クライアントで信頼性情報、複合認証、および Kerberos 防御をサポートする]を、フェデレーション アプリケーションにアクセスし、複合認証で保護されたすべてのコンピュータに適用する必要があります。 これは、単一フォレストまたはフォレスト間のシナリオの場合に適用されます。
AD FS サーバーを格納しているドメインでは、[KDC で信頼性情報、複合認証、および Kerberos 防御をサポートする] ポリシー設定がドメイン コントローラーに適用されている必要があります。
Windows Server 2012 R2 で AD FS を構成する手順
複合認証と信頼性情報を構成するには、次の手順を使用します。
手順 1: 既定のドメイン コントローラー ポリシーで、信頼性情報、複合認証、および Kerberos 防御の KDC サポートを有効にする
- サーバー マネージャーで [ツール]、[グループ ポリシーの管理] の順に選択します。
- 下の [既定のドメイン コントローラー ポリシー] に移動し、[編集] を右クリックして選択します。
- グループ ポリシー管理エディターの [コンピューターの構成] で、[ポリシー]、[管理用テンプレート]、[システム] の順に展開し、[KDC] を選択します。
- 右側のウィンドウで [KDC で信頼性情報、複合認証、および Kerberos 防御をサポートする] をダブルクリックします。
- 新しいダイアログ ウィンドウで、KDC による信頼性情報のサポートを [有効] に設定します。
- [オプション] のドロップダウン メニューで [サポートされる] を選択し、[適用]、[OK] の順にクリックします。
手順 2: フェデレーション アプリケーションにアクセスするコンピューターで、Kerberos クライアントによる信頼性情報、複合認証、および Kerberos 防御のサポートを有効にする
- フェデレーション アプリケーションにアクセスするコンピューターに適用されているグループ ポリシーで、グループ ポリシー管理エディターの [コンピューターの構成] で、[ポリシー]、[管理用テンプレート]、[システム] の順に展開し、[Kerberos] を選択します。
- [グループ ポリシー管理エディター] ウィンドウの右側のウィンドウで [Kerberos クライアントで信頼性情報、複合認証、および Kerberos 防御をサポートする] をダブルクリックします。
- 新しいダイアログ ウィンドウで Kerberos クライアントによるサポートを [有効] に設定し、[適用]、[OK] の順にクリックします。
- グループ ポリシー管理エディターを閉じます。
手順 3: AD FS サーバーが更新されていることを確認する
次の更新プログラムが AD FS サーバーにインストールされていることを確認する必要があります。
更新 | 説明 |
---|---|
KB2919355 | 累積的なセキュリティ更新プログラム (KB2919355、KB2932046、KB2934018、KB2937592、KB2938439 を含む) |
KB2959977 | Windows Server 2012 R2 の更新プログラム |
修正プログラム 3052122 | この更新プログラムにより、Active Directory フェデレーションサービス (AD FS) の複合 ID 信頼性情報のサポートが追加されます。 |
手順 4: プライマリ認証プロバイダーを構成する
AD FS イントラネット設定の Windows 認証にプライマリ認証プロバイダーを設定します。
[AD FS の管理] の [認証ポリシー] で [プライマリ認証] を選択し、[グローバル設定] で [編集] をクリックします。
[イントラネット] の [グローバル認証ポリシーの編集] で [Windows 認証] を選択します。
[適用]、[OK] の順にクリックします。
PowerShell を使用すると、Set-AdfsGlobalAuthenticationPolicy コマンドレットを使用できます。
Set-AdfsGlobalAuthenticationPolicy -PrimaryIntranetAuthenticationProvider 'WindowsAuthentication'
Note
WID ベースのファームでは、プライマリ AD FS サーバーで PowerShell コマンドを実行する必要があります。 SQL ベースのファームでは、ファームのメンバーである任意の AD FS サーバーで PowerShell コマンドを実行できます。
手順 5: 要求記述を AD FS に追加する
次の要求記述をファームに追加します。 この要求記述は、AD FS 2012 R2 に既定では存在しないため、手動で追加する必要があります。
[AD FS の管理] の [サービス] で [要求記述] を右クリックし、[要求記述の追加] を選択します。
要求記述に、次の情報を入力します。
- 表示名: Windows デバイスグループ
- 要求の説明:
'<https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsdevicegroup>'
`
両方のチェックボックスをオンにします。
[OK] をクリックします。
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'
Note
WID ベースのファームでは、プライマリ AD FS サーバーで PowerShell コマンドを実行する必要があります。 SQL ベースのファームでは、ファームのメンバーである任意の AD FS サーバーで PowerShell コマンドを実行できます。
手順 6: msDS-SupportedEncryptionTypes 属性で複合認証ビットを有効にする
- 指定したアカウントで msDS-SupportedEncryptionTypes 属性の複合認証ビットを有効にして、Set-ADServiceAccount PowerShell コマンドレットを使用して AD FS サービスを実行します。
Note
サービス アカウントを変更した場合は、Set-ADUser -compoundIdentitySupported:$true Windows PowerShell コマンドレットを実行して複合認証を手動で有効にする必要があります。
Set-ADServiceAccount -Identity “ADFS Service Account” -CompoundIdentitySupported:$true
- AD FS サービスを再開します。
Note
[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 要求プロバイダー信頼を更新する
- Active Directory の AD FS 要求プロバイダー信頼を更新して、"WindowsDeviceGroup" 要求の次の "パススルー" 要求規則を含めます。
- [AD FS の管理] で [要求プロバイダー信頼] をクリックし、右側のウィンドウで [Active Directory] を右クリックし、[要求規則の編集] を選択します。
- [Active Directory の要求規則の編集] で [規則の追加] をクリックします。
- 変換要求規則の追加ウィザードで [入力方向の要求をパス スルーまたはフィルター処理] を選択し、[次へ] をクリックします。
- 表示名を追加し、[入力方向の要求の種類] ドロップダウンから [Windows デバイス グループ] を選択します。
- [完了] をクリックします。 [適用]、[OK] の順にクリックします。
手順 8: "WindowsDeviceGroup" 要求が必要な証明書利用者で、同様の "パススルー" または "変換" 要求規則を追加する
- [AD FS の管理] で [証明書利用者信頼] をクリックし、右側のウィンドウで RP を右クリックし、[要求規則の編集] を選択します。
- [発行変換規則] で [規則の追加] をクリックします。
- 変換要求規則の追加ウィザードで [入力方向の要求をパス スルーまたはフィルター処理] を選択し、[次へ] をクリックします。
- 表示名を追加し、[入力方向の要求の種類] ドロップダウンから [Windows デバイス グループ] を選択します。
- [完了] をクリックします。 [適用]、[OK] の順にクリックします。
Windows Server 2016 で AD FS を構成する手順
ここでは、Windows Server 2016 の AD FS で複合認証を構成する手順を詳しく説明します。
手順 1: 既定のドメイン コントローラー ポリシーで、信頼性情報、複合認証、および Kerberos 防御の KDC サポートを有効にする
- サーバー マネージャーで [ツール]、[グループ ポリシーの管理] の順に選択します。
- 下の [既定のドメイン コントローラー ポリシー] に移動し、[編集] を右クリックして選択します。
- グループ ポリシー管理エディターの [コンピューターの構成] で、[ポリシー]、[管理用テンプレート]、[システム] の順に展開し、[KDC] を選択します。
- 右側のウィンドウで [KDC で信頼性情報、複合認証、および Kerberos 防御をサポートする] をダブルクリックします。
- 新しいダイアログ ウィンドウで、KDC による信頼性情報のサポートを [有効] に設定します。
- [オプション] のドロップダウン メニューで [サポートされる] を選択し、[適用]、[OK] の順にクリックします。
手順 2: フェデレーション アプリケーションにアクセスするコンピューターで、Kerberos クライアントによる信頼性情報、複合認証、および Kerberos 防御のサポートを有効にする
- フェデレーション アプリケーションにアクセスするコンピューターに適用されているグループ ポリシーで、グループ ポリシー管理エディターの [コンピューターの構成] で、[ポリシー]、[管理用テンプレート]、[システム] の順に展開し、[Kerberos] を選択します。
- [グループ ポリシー管理エディター] ウィンドウの右側のウィンドウで [Kerberos クライアントで信頼性情報、複合認証、および Kerberos 防御をサポートする] をダブルクリックします。
- 新しいダイアログ ウィンドウで Kerberos クライアントによるサポートを [有効] に設定し、[適用]、[OK] の順にクリックします。
- グループ ポリシー管理エディターを閉じます。
手順 3: プライマリ認証プロバイダーを構成する
- AD FS イントラネット設定の Windows 認証にプライマリ認証プロバイダーを設定します。
- [AD FS の管理] の [認証ポリシー] で [プライマリ認証] を選択し、[グローバル設定] で [編集] をクリックします。
- [イントラネット] の [グローバル認証ポリシーの編集] で [Windows 認証] を選択します。
- [適用]、[OK] の順にクリックします。
- PowerShell を使用すると、Set-AdfsGlobalAuthenticationPolicy コマンドレットを使用できます。
Set-AdfsGlobalAuthenticationPolicy -PrimaryIntranetAuthenticationProvider 'WindowsAuthentication'
Note
WID ベースのファームでは、プライマリ AD FS サーバーで PowerShell コマンドを実行する必要があります。 SQL ベースのファームでは、ファームのメンバーである任意の AD FS サーバーで PowerShell コマンドを実行できます。
手順 4: msDS-SupportedEncryptionTypes 属性で複合認証ビットを有効にする
- 指定したアカウントで msDS-SupportedEncryptionTypes 属性の複合認証ビットを有効にして、Set-ADServiceAccount PowerShell コマンドレットを使用して AD FS サービスを実行します。
Note
サービス アカウントを変更した場合は、Set-ADUser -compoundIdentitySupported:$true Windows PowerShell コマンドレットを実行して複合認証を手動で有効にする必要があります。
Set-ADServiceAccount -Identity “ADFS Service Account” -CompoundIdentitySupported:$true
- AD FS サービスを再開します。
Note
[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 要求プロバイダー信頼を更新する
- Active Directory の AD FS 要求プロバイダー信頼を更新して、"WindowsDeviceGroup" 要求の次の "パススルー" 要求規則を含めます。
- [AD FS の管理] で [要求プロバイダー信頼] をクリックし、右側のウィンドウで [Active Directory] を右クリックし、[要求規則の編集] を選択します。
- [Active Directory の要求規則の編集] で [規則の追加] をクリックします。
- 変換要求規則の追加ウィザードで [入力方向の要求をパス スルーまたはフィルター処理] を選択し、[次へ] をクリックします。
- 表示名を追加し、[入力方向の要求の種類] ドロップダウンから [Windows デバイス グループ] を選択します。
- [完了] をクリックします。 [適用]、[OK] の順にクリックします。
手順 6: "WindowsDeviceGroup" 要求が必要な証明書利用者で、同様の "パススルー" または "変換" 要求規則を追加する
- [AD FS の管理] で [証明書利用者信頼] をクリックし、右側のウィンドウで RP を右クリックし、[要求規則の編集] を選択します。
- [発行変換規則] で [規則の追加] をクリックします。
- 変換要求規則の追加ウィザードで [入力方向の要求をパス スルーまたはフィルター処理] を選択し、[次へ] をクリックします。
- 表示名を追加し、[入力方向の要求の種類] ドロップダウンから [Windows デバイス グループ] を選択します。
- [完了] をクリックします。 [適用]、[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)" のメンバーではない" 場合に、MFA を呼び出すよう AD FS に指示します。
ただし、上記の条件のいずれかが満たされない場合は、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");'