如何使用 Spring Data JPA 访问 Azure AD 集成 Postgres DB?

问题描述

我们有一个在 Azure 中运行的 Postgresql 单服务实例,它集成了 Azure AD。因此,要通过 psql 进行连接,请按照以下步骤操作:

  1. 通过az login登录
  2. 检索访问令牌 $env:PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query accesstoken --output tsv)
  3. 登录psql "host=single-server-instance.postgres.database.azure.com user=aad_group@single-server-instance dbname=demodb"

到目前为止一切顺利。但是我如何使用 Spring Data JPA 做到这一点?

这就是我当前的 application.properties 文件的样子。我当然不想一遍又一遍地插入访问令牌。

logging.level.org.hibernate.sql=DEBUG

spring.datasource.url=jdbc:postgresql://single-server-instance.postgres.database.azure.com:5432/demodb
spring.datasource.username=aad_group@single-server-instance
spring.datasource.password=eyJ...there goes the access token

spring.jpa.database-platform=org.hibernate.dialect.PostgresqlDialect    
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop

这是我来自 build.gradle 的依赖项。

// ...
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    runtimeOnly 'org.postgresql:postgresql'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
// ...

问题:

  1. 我是否应该将 spring.datasourcespring.jpa 配置部分移到我的代码中并从那里向 spring.datasource.password 提供访问令牌?如果是这样,我该怎么做?它应该去哪里?
  2. 如何检索访问令牌并将其传递给 Spring Data?
  3. 我应该如何处理访问令牌的缓存?我是否需要处理刷新令牌并处理访问令牌到期?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...