SpringBoot通过Entra ID无密码连接Azure Redis报错求助
解决SpringBoot连接Azure Redis(Entra ID认证)的NoClassDefFoundError问题
问题本质
这个错误不是缺失Bean,而是缺少azure-identity-extensions依赖包——com/azure/identity/extensions/implementation/template/AzureAuthenticationTemplate类属于该扩展包,是Entra ID认证流程的核心模板实现类。
修复方案
1. 补充对应依赖
根据你的构建工具添加依赖:
- Maven(pom.xml):
<dependency> <groupId>com.azure</groupId> <artifactId>azure-identity-extensions</artifactId> <version>1.2.11</version> <!-- 选和Spring Boot版本兼容的稳定版,比如Spring Boot 3.x用1.2.x系列 --> </dependency>
- Gradle(build.gradle):
implementation 'com.azure:azure-identity-extensions:1.2.11'
注意:版本要和你用的Spring Boot Azure Starter匹配,避免版本冲突。
2. 确认Entra ID认证配置
在application.properties/application.yml里配置正确的Redis认证参数:
# Redis基础连接 spring.data.redis.host=你的Azure Redis主机名 spring.data.redis.port=6380 spring.data.redis.ssl=true # Entra ID认证核心配置 spring.data.redis.password=${AZURE_CLIENT_ID} # 用客户端ID占位,扩展包会自动处理认证流程 spring.data.redis.client-type=lettuce # 若用用户分配的托管标识,补充以下配置 azure.identity.client-id=你的客户端ID azure.identity.tenant-id=你的租户ID
3. Spring Repositories无需额外修改
你偏好的Spring Data Redis Repository可以直接使用,只要连接配置生效,Repository层会自动依托正确的连接工厂操作Redis,不需要额外编写模板代码。
额外提醒
- 之前修改Model1配置解决Azure问题的话,要确保当前Redis的租户ID、客户端ID和Model1配置一致,避免冲突。
- 清理项目缓存后重新构建,确保依赖包被正确拉取。
内容的提问来源于stack exchange,提问作者Kris Swat
相关产品推荐
相关产品推荐

