Asp.Net чтение / запись в озеро данных Azure и Azure SQL Server - PullRequest
0 голосов
/ 17 января 2019

Мне нравится создавать веб-приложение для загрузки файла, сохранения в Azure Data Lake, чтения / записи в Azure SQL Server.

Я использую свой идентификатор клиента Azure AD / секретный ключ для доступа к озеру данных,

моя строка подключения Azure SQL Server, такая как: Server = tcp: {MyAzureSQLServer} .database.windows.net, 1433; Начальный каталог = {MyAzureDatabase}; Сохранять информацию о безопасности = False; MultipleActiveResultSets = False; Encrypt = True; TrustServerCertificate = False; Аутентификация = "Интегрированная Active Directory"

Asp.Net Mvc Core, озеро данных работает нормально, но отчет Azure SQL: ключевое слово не поддерживается: «аутентификация».

Asp.Net Mvc (Framework), Azure SQL работает, но ошибка отчета о озере данных: инициализатор типа для «Microsoft.IdentityModel.Clients.ActiveDirectory.TokenCache» вызвал исключение.

Что я делаю не так?

Спасибо, Wes

1 Ответ

0 голосов
/ 17 января 2019

Используйте токен доступа (полученный через управляемые удостоверения), чтобы использовать проверку подлинности Azure Active Directory в клиенте SQL для .NET Core. Ниже все, что вам нужно, включая строку подключения.

Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    //code ignored for simplicity
    services.AddDbContext<MyCustomDBContext>();

    services.AddTransient<IDBAuthTokenService, AzureSqlAuthTokenService>();
}

MyCustomDBContext.cs

public partial class MyCustomDBContext : DbContext
{
    public IConfiguration Configuration { get; }
    public IDBAuthTokenService authTokenService { get; set; }

    public CortexContext(IConfiguration configuration, IDBAuthTokenService tokenService, DbContextOptions<MyCustomDBContext> options)
        : base(options)
    {
        Configuration = configuration;
        authTokenService = tokenService;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        SqlConnection connection = new SqlConnection();
        connection.ConnectionString = Configuration.GetConnectionString("defaultConnection");
        connection.AccessToken = authTokenService.GetToken().Result;

        optionsBuilder.UseSqlServer(connection);
    }
}

AzureSqlAuthTokenService.cs

public class AzureSqlAuthTokenService : IDBAuthTokenService
{
    public async Task<string> GetToken()
    {
        AzureServiceTokenProvider provider = new AzureServiceTokenProvider();
        var token = await provider.GetAccessTokenAsync("https://database.windows.net/");

        return token;
    }
}

Подробнее об аутентификации AAD с использованием токена доступа здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...