AVDのHybrid AzureAD Join構成で SSO を試す!

AVDのHybrid AzureAD Join 構成においてSSO(シングルサインオン)が出来るようになりましたので、試してみたいと思います。なんとNTLM認証に対してもSSOが可能です。
設定は簡単で、ホストプールのRDPプロパティに追記するのみです。※ADFS、WAP、ADCSなどは不要です。

さっそく、構成を見てみましょう!

①クライアントからAzureADに対して認証を行う。
②認証が成功すると、AzureADが[Partial TGT][PRT]をセッションホストに発行する
※AzureAD内のAzureADKerberosが持つ[Id][DomainDnsName][KeyVersion]を照合する
③セッションホストは[Partial TGT]をADに提示し、[TGT]を受け取る
PRT=Primary Refresh Token / TGT=Ticket Granting Ticket

どの部分のパスワードが入力不要になるのか見てみましょう!

【手元PCがAD参加の場合】
①手元のPCへのサインイン=ADアカウントを入力
②AVDクライアントソフトでのサインイン=AzureADアカウントを入力
③セッションホストへのサインイン=※入力不要
④Microsoft365へのサインイン=※入力不要

【手元PCがAzureAD参加の場合】
①手元のPCへのサインイン=AzureADアカウントを入力
②AVDクライアントソフトでのサインイン=※入力不要
③セッションホストへのサインイン=※入力不要
④Microsoft365へのサインイン=※入力不要

[利用のための諸条件]
・Hybrid AzureAD Join 構成 ※セッションホストがAADに同期されている必要がある
・AD側のドメイン名がAzureAD側にカスタムドメインとして登録されている必要がある
※オンプレドメイン[localad.com]–sync–AAD[xxx.onmicrosoft.com]はNG
・AzureAD Domain Service構成は、サポート外
・クラウドIDは利用不可
・対応セッションホスト ※Single-Session、Multi-session 利用可能
ーWindows 11 (KB5017383)
ーWindows 10 20H2以降 (KB5017380)
ーWindows Server 2022 (KB5017381)
・Windows版/MacOS版クライアントアプリ、ブラウザ接続
※手元PCは、ドメインに参加していなくてもよい
AzureADKerberosを利用する際は、Server2016以降、機能レベル2008R2以降である必要があります。


それでは、やってみよう!!

こちらを参考にHybrid AzureAD Join構成を構築します。
Azure Virtual Desktop (AVD) を構築する!

AzureADKerberosの作成

※セッションホスト作成前に実施しておく必要があります。
※オンプレドメインに参加している端末にて実施

Install-Module -Name AzureADHybridAuthenticationManagement

$domain = “localad.com“ ←オンプレドメイン名を入力
$cloudCred = Get-Credential ←AAD GlobalAdminsを入力
$domainCred = Get-Credential ←AD DomainAdminsを入力
Set-AzureADKerberosServer -Domain $domain -CloudCredential $cloudCred -DomainCredential $domainCred

Get-AzureADKerberosServer -Domain $domain -CloudCredential $cloudCred -DomainCredential $domainCred
それぞれが一致している必要があります。
[Id]と[CloudId] / [DomainDnsName]と[CloudDomainDnsName]
[KeyVersion]と[CloudKeyVersion] / [KeyUpdatedOn]と[CloudKeyUpdatedOn]

コンピューターオブジェクトが作成されている

[表示]ー[拡張機能]

ホストプールでのSSO設定

[RDPプロパティ]ー[接続情報]ー[RDPはサインインするためにAzureAD認証を使用しようとします]を選択 ←たったのコレだけ

 こちらでもOK。RDPプロパティに[enablerdsaadauth:i:1]を追加します。

[Domain Admins]アカウントでセッションホストに接続する方法

※通常だと、[Domain Admins]アカウントでセッションホストに接続できません。

[AzureADKerberos]ー[プロパティ]を選択

[属性エディター]ー[msDS-NeverRevealGroup]ー[編集]を選択

[Domain Admins]と[Administrators]を削除


それでは、確認してみましょう!

Windows版クライアントアプリを起動ー[Subscribe]を選択

AzureAD参加PCの場合、アカウント選択画面が表示される。※パスワード入力は不要
※AD参加PCの場合、AzureADアカウント&パスワードの入力が必要

接続を許可されたリソースが表示されます。

デスクトップを選択すると、いきなりデスクトップが表示される。

Teamsを実行すると、サインイン済み状態で起動します!


おまけ

初回接続時のみに表示される、パスワード入力と接続許可を求めるポップアップを消す方法
※事前にセッションホストが自動登録される「動的デバイスグループ」を作成しておきます。

先ずは、エンタープライズ アプリケーション[Microsoft Remote Desktop]のオブジェクトIDを調べます。

ブラウザにて、Graph Explorer を開きます。

PATCH https://graph.microsoft.com/beta/servicePrincipals/95ba6f91-3bc7-4519-af7f-ae1655af4bfc/remoteDesktopSecurityConfiguration

{
    “isRemoteDesktopProtocolEnabled”: true,
    “targetDeviceGroups”: []
}

POST https://graph.microsoft.com/beta/servicePrincipals/95ba6f91-3bc7-4519-af7f-ae1655af4bfc/remoteDesktopSecurityConfiguration/targetDeviceGroups

{
 “id”: “7796c0f3-59ec-45d6-a91d-14d2cfc16d10“, ←作成済み動的グループ
 “displayName”: “AVD_SessionHost“ ←作成済み動的グループ
}

最後に確認

GET https://graph.microsoft.com/beta/servicePrincipals/95ba6f91-3bc7-4519-af7f-ae1655af4bfc/remoteDesktopSecurityConfiguration