Liferay 7.2升级至7.4 GA112后OpenID相关类缺失及依赖问题求助
Liferay 7.2升级到7.4 GA112后Keycloak集成问题解决
问题1:替代OpenIdConnectProviderRegistry.getOpenIdConnectProviderNames()方法
Liferay 7.4中移除了OpenIdConnectProviderRegistry类,可使用com.liferay.portal.security.sso.openid.connect.OpenIdConnectProviderManager类替代,通过其getProviderNames()方法获取OpenID Connect提供商名称。
使用示例:
import com.liferay.portal.security.sso.openid.connect.OpenIdConnectProviderManager; import org.osgi.service.component.annotations.Reference; // 在组件类中注入实例 @Reference private OpenIdConnectProviderManager _openIdConnectProviderManager; // 获取提供商名称集合 Set<String> providerNames = _openIdConnectProviderManager.getProviderNames();
问题2:依赖解析异常(Unresolved requirement: Import-Package: com.liferay.portal.security.sso.openid.connect.internal)
该异常是因为你的模块尝试导入Liferay的内部私有包(internal前缀),这类包属于非公开API,Liferay升级后禁止外部模块依赖。解决步骤:
- 清理导入配置:检查代码和
bnd.bnd文件,删除所有import com.liferay.portal.security.sso.openid.connect.internal相关的导入语句。 - 修正Gradle依赖:在
build.gradle中使用Liferay公开的OIDC API或SPI依赖,替代原来的内部包依赖,示例:
dependencies { compileOnly group: "com.liferay", name: "com.liferay.portal.security.sso.openid.connect.api", version: "7.4.0" compileOnly group: "com.liferay", name: "com.liferay.portal.security.sso.openid.connect.spi", version: "7.4.0" }
- 确认UserInfoProcessor实现:自定义用户信息处理时,应实现SPI接口
com.liferay.portal.security.sso.openid.connect.spi.UserInfoProcessor,而非原内部类。
内容的提问来源于stack exchange,提问作者Akash
相关产品推荐
相关产品推荐

