針對 Azure SQL 受控執行個體上 Microsoft Entra 主體的 Windows 驗證進行疑難排解
本文包含在 Microsoft Entra ID 中實作 Windows 驗證主體時所使用的疑難排解步驟 (之前稱為 Azure Active Directory)。
注意
Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。
確認正在快取票證
您可以使用 klist 命令來顯示目前快取的 Kerberos 票證清單。
klist get krbtgt
命令應該會從內部部署 Active Directory 領域傳回票證。
klist get krbtgt/kerberos.microsoftonline.com
klist get MSSQLSvc
命令應該會從服務主體名稱 (SPN) 為 MSSQLSvc/<miname>.<dnszone>.database.windows.net:1433
的 kerberos.microsoftonline.com
領域傳回票證。
klist get MSSQLSvc/<miname>.<dnszone>.database.windows.net:1433
以下是一些已知的錯誤碼:
0x6fb:找不到 SQL SPN - 請檢查您是否已輸入有效的 SPN。 如果您已實作傳入信任型驗證流程,請回顧建立及設定 Microsoft Entra Kerberos 受信任的網域物件中的步驟,驗證您已執行所有設定步驟。
0x51f - 此錯誤可能與 Fiddler 工具衝突有關。 若要降低此問題的風險,請依照下列步驟操作:
netsh winhttp reset autoproxy
執行netsh winhttp reset proxy
執行- 在 Windows 登錄中,尋找
Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\iphlpsvc\Parameters\ProxyMgr
並刪除含有連接埠:8888
設定的任何次要項目 - 電腦重新開機,然後 Windows 驗證再試一次
0x52f - 指出參考的使用者名稱和驗證資訊是否有效,但某些使用者帳戶限制卻造成驗證無法順利完成。 如果您設定了 Microsoft Entra 條件式存取原則,就可能會發生這種情況。 若要減輕此問題,您必須在條件式存取規則中排除 Azure SQL 受控執行個體服務主體 (名稱為
<instance name> principal
) 應用程式。
調查訊息流程失敗
使用 Wireshark 或您選擇的網路流量分析器,監視用戶端與內部部署 Kerberos 金鑰發佈中心 (KDC) 之間的流量。
使用 Wireshark 時,預期會發生下列情況:
- AS-REQ:用戶端 => 內部部署 KDC => 傳回內部部署 TGT。
- TGS-REQ:用戶端 => 內部部署 KDC => 將轉介傳回至
kerberos.microsoftonline.com
。
連線共用
啟用連線共用時,驅動程式會藉由在集區中保持開啟來管理 SQL 連線以供重複使用,而不是關閉它們。 這可能會導致在安全性快取失效后重複使用連線的情況,導致 Kerberos 票證重新驗證。 如果連線已在集區中超過五分鐘,則票證會被視為已過期,導致連線失敗。 若要避免這種情況,請在 連接字串 中將連線存留期設定為少於五分鐘。 這項變更可確保不會從集區重複使用早於指定存留期的連線。
相關內容
深入了解在 Azure SQL 受控執行個體上為 Microsoft Entra 主體實作 Windows 驗證: