在application.properties中使用AD服务主体设置Spring Data JPA

c6ubokkw  于 2024-01-09  发布在  Spring
关注(0)|答案(1)|浏览(319)

根据Azure中的文档:

  1. import java.sql.Connection;
  2. import java.sql.ResultSet;
  3. import java.sql.Statement;
  4. import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
  5. public class AADServicePrincipal {
  6. public static void main(String[] args) throws Exception{
  7. String principalId = "1846943b-ad04-4808-aa13-4702d908b5c1"; // Replace with your AAD service principal ID.
  8. String principalSecret = "..."; // Replace with your AAD principal secret.
  9. SQLServerDataSource ds = new SQLServerDataSource();
  10. ds.setServerName("aad-managed-demo.database.windows.net"); // Replace with your server name
  11. ds.setDatabaseName("demo"); // Replace with your database
  12. ds.setAuthentication("ActiveDirectoryServicePrincipal");
  13. ds.setAADSecurePrincipalId(principalId);
  14. ds.setAADSecurePrincipalSecret(principalSecret);
  15. try (Connection connection = ds.getConnection();
  16. Statement stmt = connection.createStatement();
  17. ResultSet rs = stmt.executeQuery("SELECT SUSER_SNAME()")) {
  18. if (rs.next()) {
  19. System.out.println("You have successfully logged on as: " + rs.getString(1));
  20. }
  21. }
  22. }
  23. }

字符串
我们可以使用它来创建一个可以通过AD服务主体连接到SQL Server的数据源,并将其作为Bean插入,我相信是:

  1. @Bean
  2. @Primary
  3. DataSource dataSource() throws SQLException {
  4. String principalId = "1846943b-ad04-4808-aa13-4702d908b5c1"; // Replace with your AAD service principal ID.
  5. String principalSecret = "..."; // Replace with your AAD principal secret.
  6. SQLServerDataSource ds = new SQLServerDataSource();
  7. ds.setServerName("aad-managed-demo.database.windows.net"); // Replace with your server name
  8. ds.setDatabaseName("demo"); // Replace with your database
  9. ds.setAuthentication("ActiveDirectoryServicePrincipal");
  10. ds.setAADSecurePrincipalId(principalId);
  11. ds.setAADSecurePrincipalSecret(principalSecret);
  12. return ds;
  13. }


但我想问的是--我们能通过YAML/application.properties配置整个程序,让它自动配置数据JPA吗?如果不能,上述过程能正常工作吗?

ki0zmccv

ki0zmccv1#

下面的配置对我有用。

  1. spring:
  2. datasource:
  3. url: jdbc:sqlserver://<host>:<port>;database=<database name>;authentication=ActiveDirectoryServicePrincipal;
  4. username: <your AAD service principal ID>
  5. password: <your AAD principal secret>

字符串
根据document,我的配置可以从JDBC Driver 10.2开始使用。

相关问题