Open Liberty通过Azure工作负载身份连接Azure PostgreSQL配置示例请求
Open Liberty 配置 Azure 工作负载身份认证连接 Azure PostgreSQL
1. 基础依赖与特性配置(server.xml)
先确保Open Liberty启用必要的核心特性,以及PostgreSQL JDBC驱动支持:
<featureManager> <feature>jdbc-4.3</feature> <feature>mpConfig-2.0</feature> <!-- 支持Azure工作负载身份令牌获取 --> <feature>azure-identity-1.0</feature> </featureManager> <!-- 配置PostgreSQL JDBC驱动库 --> <library id="postgresql-library"> <file name="postgresql-42.6.0.jar" /> <!-- 替换为你使用的JDBC版本 --> </library>
2. 工作负载身份与数据源配置
2.1 配置Azure工作负载身份凭据提供者
利用已创建的AKS服务账号与托管身份联合关系,自动获取Azure AD访问令牌:
<azureWorkloadIdentityCredential id="azure-wi-credential" />
2.2 配置PostgreSQL数据源(替换密码认证)
将原密码字段替换为动态获取的Azure AD令牌,同时在JDBC URL中指定Azure AD认证模式:
<dataSource id="postgresql-ds" jndiName="jdbc/postgresql"> <jdbcDriver libraryRef="postgresql-library" /> <properties.postgresql url="jdbc:postgresql://<你的PostgreSQL服务器名>.postgres.database.azure.com:5432/<数据库名>?sslmode=require&authentication=AzureADPassword" user="<托管身份客户端ID或用户主体名(如:<托管身份名>@<租户ID>.onmicrosoft.com)>" password="${azure.workload.identity.token}" /> <!-- 关联工作负载身份凭据提供者 --> <containerAuthData credentialRef="azure-wi-credential" /> </dataSource>
3. 应用代码适配(无需修改核心逻辑)
如果应用原本通过JNDI获取数据源,直接沿用原有逻辑即可,令牌获取与认证过程由Open Liberty自动处理:
Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("jdbc/postgresql"); Connection conn = ds.getConnection(); // 后续数据库操作逻辑保持不变
4. 前置验证与权限配置
确保Azure PostgreSQL端已完成以下配置:
- 服务器已启用Azure AD认证
- 将托管身份添加为数据库角色并赋予权限,执行PostgreSQL命令:
CREATE ROLE <托管身份名称> WITH LOGIN PASSWORD '<托管身份客户端ID>' IN ROLE azure_ad_user; GRANT CONNECT ON DATABASE <数据库名> TO <托管身份名称>; -- 根据业务需求赋予数据表操作权限 GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO <托管身份名称>;
内容的提问来源于stack exchange,提问作者user2745580
相关产品推荐
相关产品推荐

