Issue
- The Liferay classes
com.liferay.portal.security.sso.openid.connect.OpenIdConnectProvider;
andcom.liferay.portal.security.sso.openid.connect.OpenIdConnectProviderRegistry;
were removed in U34+ by LPS-150092. - How can I replace them in my customization?
Environment
- DXP 7.4
Resolution
-
One way to achieve replacement classes is to recreate the
OpenIdConnectProviderRegistryImpl.findOpenIdConnectProvider
method through customizations.-
This will require retrieving all entries from the
_configuration
table which begins withcom.liferay.portal.security.sso.openid.connect.internal.configuration.OpenIdConnectProviderConfiguration
, and then iterating through and find the one with the matchingproviderName
. - We did this before via an in-memory map (see LPS-150092 for more details). Basically, upon server startup or configuration addition/subtraction, we would update the map as providerName (key) to configuration (value). From there we could easily look up the configurations.
- You could also skip the map and just perform the configuration retrieval and filtering per request.
-
This will require retrieving all entries from the
-
Alternatively, you may be able to access the data using the following script, since we now create an
OAuthClientEntry
for each OpenID Connect connection.-
com.liferay.oauth.client.persistence.service.OAuthClientEntryLocalServiceUtil.getOAuthClientEntries(-1, -1).each { client ->
out.println(client);
}
-
Additional Information
-
OpenIdConnectProvider
configurations are are no longer stored locally with the inclusion of LPS-150092, so we cannot easily retrieve them with a class likeOpenIdConnectProviderRegistryImpl.findOpenIdConnectProvider
. This code change can be reviewed at https://github.com/brianchandotcom/liferay-portal/compare/03162209ce...23b907d1cf. -
Because the
OpenIdConnectProvider
objects were meant to be gathered dynamically depending on login/authentication needs rather than to be used on their own, everything was moved to the backend, where it isn’t very accessible with public APIs.
TheOpenIdConnectProviderRegistryImpl
class has been historically internal, as its contents were never meant to be leveraged externally.
Contenido exclusivo para suscriptores.
Una Suscripción Enterprise de Liferay proporciona acceso a más de 1.500 artículos que incluyen las mejores practicas, diagnóstico de problemas y otras soluciones útiles. Inicia sesión para tener un acceso completo.
Inicia sesión