当前位置: 首页 > 知识库问答 >
问题:

使用Liquibase进行AzureSQL和Azure Active Directory身份验证

柴茂材
2023-03-14

如何将Liquibase与Azure SQL数据库和Azure Active Directory身份验证一起使用?具体地说,我想使用ActiveDirectoryPassword身份验证模式进行连接,如下所述:

https://docs.microsoft.com/en-us/sql/connect/jdbc/connecting-using-azure-active-directory-authentication?view=sql-server-ver15#使用activedirectorypassword身份验证模式连接

我不知道如何调用Liquibase CLI来实现这一点。

这可能吗?

共有1个答案

卢锋
2023-03-14

我能让它工作。我对Java不是很熟悉(我们在C#项目中使用Liquibase),所以我认为一些Java片段让我大吃一惊。

我必须做几件事才能成功:

  1. 我需要添加一些属性到我发送到Liquibase的URL:

--url=“jdbc:sqlserver://REDACTED.database.windows.net;databaseName=已编辑;身份验证=ActiveDirectoryPassword;加密=真;trustServerCertificate=true“

ActiveDirectoryPassword告诉驱动程序使用我想要的身份验证机制。我还必须添加encrypt=true和trustServerCertificate=true,以避免出现一些SSL错误(来自:https://docs.microsoft.com/en-us/sql/connect/jdbc/connecting-with-ssl-encryption?view=sql-服务器版本15)。

我需要类路径中的MSAL4J(Azure Active Directory)库。我将它们添加到liquibase/lib目录,以便默认的liquibase启动程序脚本可以为我添加它们。我也被抓住了,因为我需要使用Maven,而我们没有使用它。下载Maven之后,我使用copy dependencies插件下载了所需的依赖项。

mvn依赖项:复制依赖项

这里是简单的pom。我使用的xml

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany.app</groupId>
    <artifactId>my-app</artifactId>
    <version>1</version>
    <dependencies>
        <dependency>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>adal4j</artifactId>
            <version>1.6.3</version>
        </dependency>
    </dependencies>
</project>

我还将这些依赖项放在liquibase/lib目录中,以便它们自动包含在类路径中。Microsoft的说明有助于我找到正确的位置:

https://docs.microsoft.com/en-us/sql/connect/jdbc/connecting-using-azure-active-directory-authentication?view=sql-server-ver15#使用activedirectorypassword身份验证模式连接

另外,我不确定是否需要它来实现我的目标,但我升级到了最新的Liquibase(3.8.7)和最新的SQL Server驱动程序(8.2):

https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-服务器版本15

 类似资料:
  • 我有一个带有AzureSQL后端的MS Access前端应用程序(accdb)。我目前正在使用SQL服务器身份验证,但我想使用某种活动目录。我没有本地广告,所以我最初考虑设置Azure广告。然而,我们的小团队已经在使用Office 365,据我所知,O365由Azure AD提供支持。 所以我的问题是,是否可以使用O365帐户(微软通常称之为“工作帐户”)来针对Azure SQL后端进行身份验证?

  • 问题内容: 我想为在Raspberry Pi上运行并像本地服务器一样工作的软件制作一些更新脚本。该服务器应连接到Web上的主服务器,以获取软件更新并验证软件的许可证。为此,我设置了两个python脚本。我希望它们通过TLS套接字连接。然后,客户端检查服务器证书,然后服务器检查它是否是授权的客户端之一。我在此页面上找到了解决方案。 现在还有一个问题。我想知道 哪个客户端 (取决于证书)正在建立连接。

  • 但请求呢?和是用户的属性,但应将它们发送到endpoint。如果我将资源发送到endpoint,则没有多大意义。 对此有没有办法,遵循JSONAPI并保持API的意义?

  • 我正在尝试使用urllib3连接到网页。代码如下所示。 如果我们假设url是需要使用用户名和密码进行身份验证的某个网页,那么我是否使用正确的代码进行身份验证? 我使用urllib2做这件事很舒服,但使用urllib3做不到同样的事情。 非常感谢

  • jwt不应该仅仅用于认证用户吗?我读到过可以在里面存储非敏感的东西,比如用户ID。将权限级别之类的东西存储在令牌中可以吗?这样我可以避免数据库调用。

  • 问题内容: 我可以通过接收到请求的xml 但不是 没有JavaScript错误,没有跨域策略问题。可能是语法错误,但是我找不到合适的教程。有什么建议吗? 问题答案: 我认为您需要纯格式: