[英]Azure SQL authentication using Azure Active Directory
使用時,按照本教程連接可以正常工作:
var connection = (SqlConnection)Database.GetDbConnection();
connection.AccessToken = (new Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result;
但現在文檔說“不再推薦 Microsoft.Azure.Services.AppAuthentication”
因此,如Using Azure Active Directory authentication with SqlClient中所述更改我的連接,我收到以下錯誤:
托管用戶不支持集成 Windows 身份驗證。
嘗試使用托管身份獲取令牌。 無法獲取訪問令牌。 嘗試對無法訪問的網絡進行套接字操作。 (169.254.169.254:80)
沒有什么可以阻止該地址,但它從哪里獲得 IP? 本教程的代碼使用https://database.windows.net/
來獲取令牌(解析 65.55.23.107)。
我可以/應該在某處覆蓋該地址嗎?
是否缺少其他配置?
這些身份驗證方式適用於不同的場景,例如,如果要使用Active Directory Integrated authentication
,則需要通過 ADFS 將本地 AD 與 Azure AD 聯合,如果要使用Active Directory Managed Identity authentication
,則必須運行您在支持 MSI 的 Azure 服務中的代碼(需要先啟用 MSI) ,因為代碼本質上是對 ZCF04A02E37B774FC311A48F608F608F608F608F608F605C3C597Z 進行了 API 調用,然后使用令牌實例訪問元數據端點MSI 支持的服務。
因此,如果您想將代碼從舊的 sdk 遷移到新的,您需要選擇適用於您的場景的正確身份驗證方式。 這里我推薦您使用Active Directory Service Principal authentication
,它可以適用於任何場景,請按照以下步驟操作。
2. 獲取登錄值並創建新的應用程序密碼。
3. 使用CREATE USER [Azure_AD_Object] FROM EXTERNAL PROVIDER
向服務主體授予權限。
4.然后使用這里的代碼,用你的值修復從第2步得到的值。
string ConnectionString = @"Server=demo.database.windows.net; Authentication=Active Directory Service Principal; Database=testdb; User Id=AppId; Password=secret";
using (SqlConnection conn = new SqlConnection(ConnectionString)) {
conn.Open();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.