我们有一个在 Azure 中运行的 PostgreSQL 单一服务实例,它集成了 Azure AD。所以要通过psql
我按照以下步骤进行连接:
- 通过登录
az login
- 检索访问令牌
$env:PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query accessToken --output tsv)
- 登录
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'
}
// ...
问题:
- 我应该将配置部分移动到我的代码中
spring.datasource
并从那里spring.jpa
提供访问令牌吗?spring.datasource.password
如果是这样,我该怎么做?它应该去哪里? - 如何检索访问令牌并将其传递给 Spring Data?
- 我应该如何处理访问令牌的缓存?我是否必须处理刷新令牌并处理访问令牌到期?