KerberosってNAT越えできないはずでは

2023年5月29日

KerberosってNAT越えできないはずなのに、AADシームレスSSOでは、「クライアント⇔AAD」間でKerberosチケットがインターネット経由でやり取りされるようです。もともとKerberosってNAT越えできない(インターネット経由では扱えない)と思っていたので、調査しました。

質問

AADのシームレスSSOについてご質問させてください。

https://learn.microsoft.com/ja-jp/azure/active-directory/hybrid/connect/how-to-connect-sso-how-it-works

こちらのサイトを拝見すると
ハイブリッドAD参加している端末が、M365にアクセスする際に
「端末⇔AAD」の間でkerberosチケットを交換しているように記載されています。

基本的にkerberosはNAT越えを許容していないプロトコルだと認識しているのです
が、
どのように実現しているのでしょうか? いわゆるオンプレのADで使われている
kerberosチケットとは別ものなのでしょうか(AAD用にカスタマイズされている?)

以下の記事を見るとkerberosのNAT利用は推奨していないと記載がありました。
https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/identity/suppo
rt-for-active-directory-over-nat

回答

AAD の観点より以下に回答を記載いたします。
はじめに、シームレス SSO のアーキテクチャーをご案内いたします。

(1) ユーザーはユーザー名を入力し AAD へ認証を開始します
(2) AAD は 401 認証エラーを返し、Kerberos チケットを要求します
(3) クライアントはドメイン コントローラーへ Kerberos チケットを要求します
(4) ドメイン コントローラーは Kerberos チケットを発行します
(5) クライアントは AAD に Kerberos チケットを転送します
(6) AAD は Kerberosチケットを検証し、トークンを発行します

上記のシームレス SSO のフローの通り、

クライアントはドメイン コントローラーから取得した Kerberos チケットを AAD へ
転送します。

お送りいただきました NAT に関する公開情報については、

ドメインコントローラー間の通信、またはクライアント – ドメイン コントローラー
間の通信について言及されたものとなります。

具体的には上記フローの (3)(4) に該当するものとなり、クライアント – AAD 間の
通信である (5) は該当しないものとご認識ください。