gpt4 book ai didi

authentication - 使用仅限云的 Azure Active Directory 的 SQL Azure 集成身份验证失败

转载 作者:行者123 更新时间:2023-12-04 08:27:41 32 4
gpt4 key购买 nike

我创建了一个 Azure 租户并配置了以下内容:

Azure AD 与:

  • 一个简单的自定义域名(少于 15 个字符)。 DNS 验证等。一切都很好。
  • 用户和管理员组
  • 两组用户
  • A VNET、DNS 和 IP 地址
  • 启用设备管理
  • 启用域服务并连接到 VNET

  • 请注意,内部没有任何内容,这一切都在云端。我的物理笔记本电脑实际上被用作跳箱。

    一个 SQL Azure 数据库和服务器:
  • 防火墙规则为所有必要的传入连接打开
  • 将 Active Directory 管理员设置为我在 Azure AD 中创建的管理员组
  • AD 用户全部使用 CREATE USER FROM EXTERNAL PROVIDER 在 SQL Azure 中创建;

  • 我可以使用 Active Directory 通用身份验证或 Active Directory 密码身份验证从笔记本电脑上的 SSMS 连接到 SQL Azure 数据库。对于这两种情况,我都按照预期要求输入用户名和密码。

    目标:
    我希望能够使用集成身份验证,以便可以从 a) 一台机器,b) 一个 ASP.NET MVC 站点无缝地传输身份。我还没有尝试过场景 b 是的,所以让我们停一下。对于场景a,我做了以下工作。

    配置 Azure VM:
  • 标准 D2 - Windows 10 完全修补
  • 连接到与域相同的 VNET
  • 已安装 SQL Server Management Server 2016 (SSMS)(最新和已修补 - 13.0.15700.28)
  • 已安装 ODBC 13.1(虽然我认为这无关紧要)
  • ADAL
  • 面向 IT 专业人员的 Microsoft 在线服务登录助手 RTW

  • 简而言之,我的完整“环境”由一个 Azure AD、一个 SQL Azure DB 和一个客户端 VM 组成。

    问题:
    我使用目录服务将 VM 加入我的 Azure Active Directory,注销并以有效域用户身份登录(在 AD 和 SQL Azure 中有效,具有适当的登录名和权限)。当我打开 SSMS 时,我可以使用 Active Directory 通用身份验证或 Active Directory 密码身份验证正常连接,但是当我尝试使用 Active Directory 身份验证安全连接时,出现以下错误。如果我将 VM 直接加入 Azure AD,也会发生这种情况。我的部署是 100% 云,所以没有联邦。

    所以我有两个问题:
  • 我的配置或方法中是否缺少某些内容,或者是否有解决方法? It may be an existing issue - see here
  • 如果使用 C# 在 .net 4.6.2 中编码并部署在云中,这种连接(直通)是否有效?可能使用 ODBC 13.1 驱动程序?

  • 谢谢

    ===================================

    Cannot connect to .database.windows.net.

    ===================================

    Failed to authenticate the user NT Authority\Anonymous Logon in Active Directory (Authentication=ActiveDirectoryIntegrated). Error code 0xCAA9001F; state 10 Integrated Windows authentication supported only in federation flow. (.Net SqlClient Data Provider)

    ------------------------------ For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=0&LinkId=20476

    ------------------------------ Server Name: .database.windows.net Error Number: 0 Severity: 11 State: 0 Procedure: ADALGetAccessToken

    ------------------------------ Program Location:

    at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource1 retry, DbConnectionOptions
    userOptions, DbConnectionInternal oldConnection, DbConnectionInternal&
    connection) at
    System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection
    outerConnection, DbConnectionFactory connectionFactory,
    TaskCompletionSource
    1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at
    System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource
    1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo ci, IServerType server) at Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()

    最佳答案

    从 Azure 支持获得更新:

    它不起作用,因为:

  • 若要使用 Active Directory 集成身份验证,必须联合 Azure Active Directory。这是因为 Kerberos 是必须要做的(登录机器时生成的 Kerberos TG 票证),但是 Azure AD 不知道 Kerberos,因此需要 ADFS。
  • Azure AD 域服务预览:这使得旧功能(NTLM、Kerberos 等)可用。但是 Azure SQL 数据库不支持老式的 Windows 身份验证。

  • 因此,您可以添加 2-3 个低功耗 VM 来实现 AD + ADFS + AAD + AAD-DS,但这绝对不是理想的方式。

    如果我得到有关 future 计划的信息,我会在这里分享。

    **

    有同样的问题和一些 Unresolved 票。一旦我获得更多信息,将更新此答案。

    截至今天,仅支持联合设置,如文档所示 here .你必须建立一个 ADFS setup使用 AD 连接。

    这是 AAD-DS 应该为仅云解决方案提供的东西。 AAD-DS 仍是预览版...

    关于authentication - 使用仅限云的 Azure Active Directory 的 SQL Azure 集成身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39367634/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com