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

AVDのAzureAD Join 構成においてSSO(シングルサインオン)が出来るようになったので、
試してみたいと思います。さらに、AzureADKerberosを作成する事で、オンプレミスのドメイン環境に対してもSSOが出来てしまいます!なんとNTLM認証に対してもSSOが可能です。これで、AzureAD Joinの弱点であった、ドメイン環境へのアクセス、FSlogixの利用などが一気に解決しますね! ※GPOはダメ

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

①クライアントからAzureADに対して認証を行う。
②認証が成功すると、AzureADが[Partial TGT][PRT]をセッションホストに発行する
※AzureADKerberosがあれば、オンプレドメイン環境へのSSOも可能

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

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

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

[利用のための諸条件]
・AzureAD Join 構成
・対応セッションホスト ※Single-Session、Multi-session 利用可能
ーWindows 11 (KB5017383)
ーWindows 10 20H2以降 (KB5017380)
ーWindows Server 2022 (KB5017381)
・Windows版/MacOS版クライアントアプリ、ブラウザ接続
※手元PCは、ドメインに参加していなくてもよい
・利用アカウントが[DomainAdmin][クラウドID]の場合、初回のみパスワード入力が必要
AzureADKerberosを利用する際は、Server2016以降、機能レベル2008R2以降である必要があります。


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

こちらを参考にAzureAD Join構成を構築します。
AVDでAD不要の AzureAD Join を試す!

ホストプールでのSSO設定

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

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

AzureADKerberosの作成 ※オンプレ環境へのSSOが必要な場合

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

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]

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

[表示]ー[拡張機能]

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

※通常だと、[Domain Admins]アカウントで接続すると初回のみパスワードを聞かれます。

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

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

[Domain Admins]と[Administrators]を削除


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

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

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

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

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

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

試しに、オンプレドメイン環境のファイルサーバーにUser11で接続しました。
User12にアクセスすると拒否されました。ACLが効いてますね!


おまけ

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

先ずは、エンタープライズ アプリケーション[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

同じ作業をエンタープライズ アプリケーション[Windows Cloud Login]でも実施します。