【问题标题】:.NET Core - Create SqlConnection with AccessToken.NET Core - 使用 AccessToken 创建 SqlConnection
【发布时间】:2018-07-05 03:04:17
【问题描述】:

我的理解是,为了在 Azure 中实现对 SQL 数据库的 Azure AD 托管服务标识访问,我需要使用检索到的令牌创建一个 SqlConnection

要将该令牌添加到 SqlConnection,.NET 4.6+ 有一个 AccessToken 属性来执行此操作。 .NET Core 2.0 没有。

有没有办法解决这个问题?

除非我有误解,否则目前似乎不可能在核心应用中实现 Azure AD 托管服务标识。

【问题讨论】:

    标签: azure access-token azure-managed-identity


    【解决方案1】:

    要使用托管标识访问 Sql,您需要使用 .NET Framework 4.6 或更高版本或 .NET Core 2.2 或更高版本。

    你可以在这里找到完整的教程:

    【讨论】:

      【解决方案2】:

      现在是 2020 年 6 月,并且正在使用 .NET 5.0 preview 4。但仍然不支持在 Blazor Asp.NET Core 中基于 AccessToken 连接到 SqlConnection。

      Azure SQL 数据库中的连接字符串部分说要在 Authentication="Active Directory Interactive" 的连接字符串中使用“用户 ID” 但在 .NET EF Core 中,我们收到错误,即用户 ID 无法使用 AD Integrated 或 AD Interactive 设置.另一种方法是使用 Azure Vault。

      我们更喜欢在连接字符串和 AccessToken 中使用动态用户 ID(来自 AAD 可显示 ID)。这会在 .NET 5 最终版本之前得到支持吗?

      【讨论】:

        【解决方案3】:

        从 SqlClient 包 4.6.0 开始,SqlConnection 现在支持 .NET Core 2.2 的 SqlClientAccessToken

        https://www.nuget.org/packages/System.Data.SqlClient/

        【讨论】:

        • 有这方面的样品吗?我整天都在寻找。想在 Azure 中托管的 dotnet 核心应用程序中使用它。我成功获得了一个令牌,但它一直因System.Data.SqlClient.SqlException (0x80131904): Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. 错误而失败
        【解决方案4】:

        一种解决方法是将连接字符串存储在 Azure Key Vault 中,然后实施 MSI 以从 Key Vault 中检索它。

        【讨论】:

        • 是的,这正是我们已经在做的。但是,我们不喜欢它。
        • 请注意,这并不适用于任何地方,因为并非所有 Azure 资源都支持 MSI - 例如 Azure Batch 节点
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-29
        • 2018-02-14
        • 2017-05-07
        • 1970-01-01
        • 2011-12-23
        • 1970-01-01
        • 2022-01-15
        相关资源
        最近更新 更多