我想通過使用 Azure 托管標識找到一種無需密碼即可連接到 Azure SQL 資料庫的解決方案。
我已經根據以下檔案在 Azure 上完成了設定。然而有兩個問題。
https://learn.microsoft.com/en-us/samples/azure-samples/azure-sql-db-who-am-i/azure-sql-db-passwordless-connections/
- 我使用的是 MVC.NET 4.8 版本,因此無法從解決方案中復制代碼。
- 我還想找到解決方案,一旦代碼和設定完成,我確實想在本地測驗連接。
如果您還可以提供一些很棒的解釋,請在此處提供一些材料/代碼。
uj5u.com熱心網友回復:
我在 Visual Studio 中創建了 MVC .Net webapp。我在 appsetting.json 檔案中給出了連接字串
"ConnectionStrings": {
"QuotesDatabase": "Server=tcp:<servename>.database.windows.net,1433; Database=<databasename>;" }
圖片供參考:
我在專案中添加了以下包。
我添加了下面的代碼來連接 Azure sql 資料庫
var connectionString = Configuration.GetConnectionString("<connectionstringname>");
services.AddTransient(a =>{
var sqlConnection = new SqlConnection(connectionString);
var credential = new DefaultAzureCredential();
var token = credential
.GetToken(new Azure.Core.TokenRequestContext(
new[] { "https://database.windows.net/.default" }));
sqlConnection.AccessToken = token.Token;
return sqlConnection;
圖片供參考:
我在下面撰寫查詢以從 sql 資料庫中檢索資料
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Data.SqlClient;
using System.Threading.Tasks;
namespace SqlMSI.Controllers
{
[ApiController]
[Route("[controller]")]
public class QuotesController : ControllerBase
{
private readonly string connectionString;
public QuotesController(SqlConnection dbconnection)
{
DbConnection = dbconnection;
}
public SqlConnection DbConnection { get; }
public async Task<IActionResult> Get()
{
DbConnection.Open();
var sqlCommand = new SqlCommand("select * from quote", DbConnection);
var reader = sqlCommand.ExecuteReader();
var quotes = new List<Quote>();
while (reader.Read())
{
var quote = new Quote()
{
Id = Guid.Parse(reader["Id"].ToString()),
QuoteNumber = int.Parse(reader["QuoteNumber"].ToString())
};
quotes.Add(quote);
}
return Ok(quotes);
}
}
public class Quote
{
public Guid Id { get; set; }
public int QuoteNumber { get; set; }
}
}
圖片供參考:
我設定了 azure 服務身份驗證來檢索令牌憑據。
圖片供參考:
我將自己設定為 sql 服務器的管理員。
圖片供參考:
我將客戶端 IP 地址添加到 sql server Image 以供參考:
它成功運行并連接到 azure sql 資料庫并從資料庫中檢索資料。
圖片供參考:
我將專案發布到 Azure 應用服務
圖片供參考:
將azure中webapp的IP地址添加到sql server。
在 Azure 應用服務的狀態下設定系統分配的管理標識。
我打開 SSMS 并使用活動目錄密碼選項登錄服務器。
我使用以下代碼創建了用戶并向用戶添加了角色
create user [quotes-app] from external provider;
alter role db_datareader add member [quotes-app];
alter role db_datawriter add member [quotes-app];
圖片供參考:
在不使用用戶名密碼的情況下成功連接到應用程式。
圖片供參考:
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/522031.html