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
POST https://graph.microsoft.com/beta/servicePrincipals/95ba6f91-3bc7-4519-af7f-ae1655af4bfc/remoteDesktopSecurityConfiguration/targetDeviceGroups
最後に確認
GET https://graph.microsoft.com/beta/servicePrincipals/95ba6f91-3bc7-4519-af7f-ae1655af4bfc/remoteDesktopSecurityConfiguration