Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Redis session refactor clients #7233

Merged
merged 12 commits into from
Mar 1, 2025
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@
import org.orcid.persistence.jpa.entities.SourceAwareEntity;
import org.orcid.persistence.jpa.entities.StartDateEntity;
import org.orcid.persistence.jpa.entities.WorkEntity;
import org.orcid.persistence.jpa.entities.keys.ClientRedirectUriPk;
import org.orcid.pojo.ajaxForm.PojoUtil;
import org.orcid.utils.OrcidStringUtils;
import org.springframework.beans.factory.FactoryBean;
Expand Down Expand Up @@ -1040,10 +1041,10 @@ public void mapAtoB(Client a, ClientDetailsEntity b, MappingContext context) {
b.getClientRegisteredRedirectUris().add(existingEntity);
} else {
ClientRedirectUriEntity newEntity = new ClientRedirectUriEntity();
newEntity.setClientDetailsEntity(b);
newEntity.setPredefinedClientScope(ScopePathType.getScopesAsSingleString(cru.getPredefinedClientScopes()));
newEntity.setClientId(b.getClientId());
newEntity.setRedirectUri(cru.getRedirectUri());
newEntity.setRedirectUriType(cru.getRedirectUriType());
newEntity.setPredefinedClientScope(ScopePathType.getScopesAsSingleString(cru.getPredefinedClientScopes()));
newEntity.setUriActType(cru.getUriActType());
newEntity.setUriGeoArea(cru.getUriGeoArea());
b.getClientRegisteredRedirectUris().add(newEntity);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
import org.orcid.core.manager.SourceNameCacheManager;
import org.orcid.core.manager.impl.OrcidUrlManager;
import org.orcid.core.manager.v3.read_only.ClientDetailsManagerReadOnly;
import org.orcid.core.togglz.Features;
import org.orcid.core.utils.JsonUtils;
import org.orcid.core.utils.SourceEntityUtils;
import org.orcid.core.utils.v3.identifiers.PIDNormalizationService;
Expand Down Expand Up @@ -141,6 +140,7 @@
import org.orcid.persistence.jpa.entities.SpamEntity;
import org.orcid.persistence.jpa.entities.StartDateEntity;
import org.orcid.persistence.jpa.entities.WorkEntity;
import org.orcid.persistence.jpa.entities.keys.ClientRedirectUriPk;
import org.orcid.pojo.WorkExtended;
import org.orcid.pojo.WorkSummaryExtended;
import org.orcid.pojo.ajaxForm.PojoUtil;
Expand Down Expand Up @@ -1198,10 +1198,10 @@ public void mapAtoB(Client a, ClientDetailsEntity b, MappingContext context) {
b.getClientRegisteredRedirectUris().add(existingEntity);
} else {
ClientRedirectUriEntity newEntity = new ClientRedirectUriEntity();
newEntity.setClientDetailsEntity(b);
newEntity.setPredefinedClientScope(ScopePathType.getScopesAsSingleString(cru.getPredefinedClientScopes()));
newEntity.setClientId(b.getClientId());
newEntity.setRedirectUri(cru.getRedirectUri());
newEntity.setRedirectUriType(cru.getRedirectUriType());
newEntity.setPredefinedClientScope(ScopePathType.getScopesAsSingleString(cru.getPredefinedClientScopes()));
newEntity.setUriActType(cru.getUriActType());
newEntity.setUriGeoArea(cru.getUriGeoArea());
newEntity.setStatus(ClientRedirectUriStatus.valueOf(cru.getStatus()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.orcid.jaxb.model.clientgroup.ClientType;
import org.orcid.persistence.jpa.entities.ClientAuthorisedGrantTypeEntity;
import org.orcid.persistence.jpa.entities.ClientDetailsEntity;
import org.orcid.persistence.jpa.entities.keys.ClientAuthorisedGrantTypePk;
import org.orcid.pojo.ajaxForm.PojoUtil;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
Expand Down Expand Up @@ -49,11 +50,6 @@ public static void main(String [] args) {
addGrantTypeToExistingClients.validateParameters(parser);
addGrantTypeToExistingClients.init();
addGrantTypeToExistingClients.process();
System.out.println();
System.out.println();
System.out.println(addGrantTypeToExistingClients.getClientsUpdated() + " clients were updated");
System.out.println();
System.out.println();
} catch (CmdLineException e) {
System.err.println(e.getMessage());
parser.printUsage(System.err);
Expand Down Expand Up @@ -110,14 +106,11 @@ private void updateGrantTypes(ClientDetailsEntity clientDetails) {
if (!alreadyHaveGrantType) {
ClientAuthorisedGrantTypeEntity newGrantType = new ClientAuthorisedGrantTypeEntity();
newGrantType.setGrantType(grantType);
newGrantType.setClientDetailsEntity(clientDetails);
newGrantType.setClientId(clientDetails.getClientId());
clientDetails.getClientAuthorizedGrantTypes().add(newGrantType);

clientDetailsManager.merge(clientDetails);
clientsUpdated += 1;
System.out.println("Client " + clientDetails.getId() + " has been updated");
} else {
System.out.println("Client " + clientDetails.getId() + " already have the " + grantType + " scope");
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.orcid.jaxb.model.message.ScopePathType;
import org.orcid.persistence.jpa.entities.ClientDetailsEntity;
import org.orcid.persistence.jpa.entities.ClientScopeEntity;
import org.orcid.persistence.jpa.entities.keys.ClientScopePk;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.transaction.TransactionStatus;
Expand Down Expand Up @@ -70,8 +71,9 @@ private void updateScopes(ClientDetailsEntity clientDetails) {

if (!alreadyHaveReadPublicScope) {
ClientScopeEntity clientScope = new ClientScopeEntity();
clientScope.setClientDetailsEntity(clientDetails);
clientScope.setScopeType(ScopePathType.READ_PUBLIC.value());
ClientScopePk pk = new ClientScopePk();
pk.setClientId(clientDetails.getClientId());
pk.setScopeType(ScopePathType.READ_PUBLIC.value());
clientDetails.getClientScopes().add(clientScope);
clientDetailsManager.merge(clientDetails);
clientsUpdated += 1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.orcid.jaxb.model.message.ScopePathType;
import org.orcid.persistence.jpa.entities.ClientDetailsEntity;
import org.orcid.persistence.jpa.entities.ClientScopeEntity;
import org.orcid.persistence.jpa.entities.keys.ClientScopePk;
import org.orcid.pojo.ajaxForm.PojoUtil;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
Expand Down Expand Up @@ -127,7 +128,7 @@ private void updateScopes(ClientDetailsEntity clientDetails) {

if (!alreadyHaveScope) {
ClientScopeEntity clientScope = new ClientScopeEntity();
clientScope.setClientDetailsEntity(clientDetails);
clientScope.setClientId(clientDetails.getClientId());
clientScope.setScopeType(scope.value());
clientDetails.getClientScopes().add(clientScope);
clientDetailsManager.merge(clientDetails);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ private void createFromFile() {

private void createNewClientSecret(ClientDetailsEntity clientDetails) {
String clientSecret = UUID.randomUUID().toString();
clientDetails.getClientSecrets().add(new ClientSecretEntity(encryptionManager.encryptForInternalUse(clientSecret), clientDetails));
clientDetails.getClientSecrets().add(new ClientSecretEntity(encryptionManager.encryptForInternalUse(clientSecret), clientDetails.getClientId()));
clientDetailsManager.merge(clientDetails);
String output = String.format("%s\t%s\t%s\n", clientDetails.getId(), clientDetails.getClientName(), clientSecret);
output(output);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import org.orcid.persistence.jpa.entities.EventEntity;
import org.orcid.persistence.jpa.entities.EventType;
import org.orcid.pojo.ajaxForm.PojoUtil;
import org.orcid.pojo.ajaxForm.RequestInfoForm;

/**
*
Expand All @@ -45,11 +44,7 @@ public void createEvent(EventType eventType, HttpServletRequest request) {

if (request != null) {
Boolean isOauth2ScreensRequest = (Boolean) request.getSession().getAttribute(OrcidOauth2Constants.OAUTH_2SCREENS);
RequestInfoForm requestInfoForm = (RequestInfoForm) request.getSession().getAttribute("requestInfoForm");
if (requestInfoForm != null) {
clientId = requestInfoForm.getClientId();
label = "OAuth " + requestInfoForm.getMemberName() + " " + requestInfoForm.getClientName();
} else if (isOauth2ScreensRequest != null && isOauth2ScreensRequest) {
if (isOauth2ScreensRequest != null && isOauth2ScreensRequest) {
String queryString = (String) request.getSession().getAttribute(OrcidOauth2Constants.OAUTH_QUERY_STRING);
clientId = getParameterValue(queryString, "client_id");
ClientDetailsEntity clientDetailsEntity = clientDetailsEntityCacheManager.retrieve(clientId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import javax.annotation.Resource;
import org.orcid.persistence.dao.ClientDetailsDao;
import org.orcid.persistence.dao.ClientSecretDao;
import org.orcid.persistence.jpa.entities.ClientDetailsEntity;
import org.orcid.persistence.jpa.entities.ClientSecretEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -26,8 +25,7 @@ public class CleanOldClientKeysCronJob {

/**
* Removes all non primary client secret keys
*
* @param clientId
*
*/
@Transactional
public void cleanOldClientKeys() {
Expand All @@ -39,8 +37,7 @@ public void cleanOldClientKeys() {
List<String> clientIds = new ArrayList<String>();
for (ClientSecretEntity e : nonPrimaryKeys) {
i++;
ClientDetailsEntity clientDetails = e.getClientDetailsEntity();
String clientId = clientDetails.getId();
String clientId = e.getClientId();
String key = e.getClientSecret();
// build string for the condition in the db delete query
String s = String.format("(client_details_id = '%1$s' and client_secret = '%2$s')", clientId, key);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,8 @@

import javax.annotation.Resource;

import org.apache.commons.lang.time.DateUtils;
import org.orcid.core.manager.AppIdGenerationManager;
import org.orcid.core.manager.ClientDetailsManager;
import org.orcid.core.manager.EncryptionManager;
import org.orcid.core.manager.ProfileEntityManager;
import org.orcid.core.manager.SourceNameCacheManager;
import org.orcid.core.manager.read_only.impl.ClientDetailsManagerReadOnlyImpl;
Expand All @@ -24,16 +22,14 @@
import org.orcid.jaxb.model.message.ScopePathType;
import org.orcid.persistence.dao.ClientAuthorizedGrantTypeDao;
import org.orcid.persistence.dao.ClientDetailsDao;
import org.orcid.persistence.dao.ClientRedirectDao;
import org.orcid.persistence.dao.ClientScopeDao;
import org.orcid.persistence.dao.ClientSecretDao;
import org.orcid.persistence.jpa.entities.ClientAuthorisedGrantTypeEntity;
import org.orcid.persistence.jpa.entities.ClientDetailsEntity;
import org.orcid.persistence.jpa.entities.ClientGrantedAuthorityEntity;
import org.orcid.persistence.jpa.entities.ClientRedirectUriEntity;
import org.orcid.persistence.jpa.entities.ClientResourceIdEntity;
import org.orcid.persistence.jpa.entities.ClientScopeEntity;
import org.orcid.persistence.jpa.entities.ClientSecretEntity;
import org.orcid.persistence.jpa.entities.keys.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.transaction.annotation.Transactional;
Expand Down Expand Up @@ -122,7 +118,7 @@ private Set<ClientScopeEntity> getClientScopeEntities(Set<String> clientScopeStr
Set<ClientScopeEntity> clientScopeEntities = new HashSet<ClientScopeEntity>(clientScopeStrings.size());
for (String clientScope : clientScopeStrings) {
ClientScopeEntity clientScopeEntity = new ClientScopeEntity();
clientScopeEntity.setClientDetailsEntity(clientDetailsEntity);
clientScopeEntity.setClientId(clientDetailsEntity.getClientId());
clientScopeEntity.setScopeType(clientScope);
clientScopeEntities.add(clientScopeEntity);
}
Expand All @@ -133,7 +129,7 @@ private Set<ClientResourceIdEntity> getClientResourceIds(Set<String> clientResou
Set<ClientResourceIdEntity> clientResourceIdEntities = new HashSet<ClientResourceIdEntity>(clientResourceIds.size());
for (String clientResourceId : clientResourceIds) {
ClientResourceIdEntity clientResourceIdEntity = new ClientResourceIdEntity();
clientResourceIdEntity.setClientDetailsEntity(clientDetailsEntity);
clientResourceIdEntity.setClientId(clientDetailsEntity.getClientId());
clientResourceIdEntity.setResourceId(clientResourceId);
clientResourceIdEntities.add(clientResourceIdEntity);
}
Expand All @@ -144,7 +140,7 @@ private List<ClientGrantedAuthorityEntity> getClientGrantedAuthorities(List<Stri
List<ClientGrantedAuthorityEntity> clientGrantedAuthorityEntities = new ArrayList<ClientGrantedAuthorityEntity>(clientGrantedAuthorities.size());
for (String clientGrantedAuthority : clientGrantedAuthorities) {
ClientGrantedAuthorityEntity clientGrantedAuthorityEntity = new ClientGrantedAuthorityEntity();
clientGrantedAuthorityEntity.setClientDetailsEntity(clientDetailsEntity);
clientGrantedAuthorityEntity.setClientId(clientDetailsEntity.getClientId());
clientGrantedAuthorityEntity.setAuthority(clientGrantedAuthority);
clientGrantedAuthorityEntities.add(clientGrantedAuthorityEntity);
}
Expand All @@ -155,7 +151,7 @@ private SortedSet<ClientRedirectUriEntity> getClientRegisteredRedirectUris(Set<R
SortedSet<ClientRedirectUriEntity> clientRedirectUriEntities = new TreeSet<ClientRedirectUriEntity>();
for (RedirectUri clientRegisteredRedirectUri : clientRegisteredRedirectUris) {
ClientRedirectUriEntity clientRedirectUriEntity = new ClientRedirectUriEntity();
clientRedirectUriEntity.setClientDetailsEntity(clientDetailsEntity);
clientRedirectUriEntity.setClientId(clientDetailsEntity.getClientId());
clientRedirectUriEntity.setRedirectUri(clientRegisteredRedirectUri.getValue());
clientRedirectUriEntity.setRedirectUriType(clientRegisteredRedirectUri.getType().value());
List<ScopePathType> scopesForRedirect = clientRegisteredRedirectUri.getScope();
Expand All @@ -172,7 +168,7 @@ private Set<ClientAuthorisedGrantTypeEntity> getClientAuthorizedGrantTypes(Set<S
Set<ClientAuthorisedGrantTypeEntity> clientAuthorisedGrantTypeEntities = new HashSet<ClientAuthorisedGrantTypeEntity>(clientAuthorizedGrantTypes.size());
for (String clientAuthorisedGrantType : clientAuthorizedGrantTypes) {
ClientAuthorisedGrantTypeEntity grantTypeEntity = new ClientAuthorisedGrantTypeEntity();
grantTypeEntity.setClientDetailsEntity(clientDetailsEntity);
grantTypeEntity.setClientId(clientDetailsEntity.getClientId());
grantTypeEntity.setGrantType(clientAuthorisedGrantType);
clientAuthorisedGrantTypeEntities.add(grantTypeEntity);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import org.orcid.persistence.jpa.entities.ClientScopeEntity;
import org.orcid.persistence.jpa.entities.ClientSecretEntity;
import org.orcid.persistence.jpa.entities.ProfileEntity;
import org.orcid.persistence.jpa.entities.keys.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.transaction.annotation.Transactional;
Expand Down Expand Up @@ -139,7 +140,7 @@ private Set<ClientScopeEntity> getClientScopeEntities(Set<String> clientScopeStr
Set<ClientScopeEntity> clientScopeEntities = new HashSet<ClientScopeEntity>(clientScopeStrings.size());
for (String clientScope : clientScopeStrings) {
ClientScopeEntity clientScopeEntity = new ClientScopeEntity();
clientScopeEntity.setClientDetailsEntity(clientDetailsEntity);
clientScopeEntity.setClientId(clientDetailsEntity.getClientId());
clientScopeEntity.setScopeType(clientScope);
clientScopeEntities.add(clientScopeEntity);
}
Expand All @@ -150,7 +151,7 @@ private Set<ClientResourceIdEntity> getClientResourceIds(Set<String> clientResou
Set<ClientResourceIdEntity> clientResourceIdEntities = new HashSet<ClientResourceIdEntity>(clientResourceIds.size());
for (String clientResourceId : clientResourceIds) {
ClientResourceIdEntity clientResourceIdEntity = new ClientResourceIdEntity();
clientResourceIdEntity.setClientDetailsEntity(clientDetailsEntity);
clientResourceIdEntity.setClientId(clientDetailsEntity.getClientId());
clientResourceIdEntity.setResourceId(clientResourceId);
clientResourceIdEntities.add(clientResourceIdEntity);
}
Expand All @@ -161,7 +162,7 @@ private List<ClientGrantedAuthorityEntity> getClientGrantedAuthorities(List<Stri
List<ClientGrantedAuthorityEntity> clientGrantedAuthorityEntities = new ArrayList<ClientGrantedAuthorityEntity>(clientGrantedAuthorities.size());
for (String clientGrantedAuthority : clientGrantedAuthorities) {
ClientGrantedAuthorityEntity clientGrantedAuthorityEntity = new ClientGrantedAuthorityEntity();
clientGrantedAuthorityEntity.setClientDetailsEntity(clientDetailsEntity);
clientGrantedAuthorityEntity.setClientId(clientDetailsEntity.getClientId());
clientGrantedAuthorityEntity.setAuthority(clientGrantedAuthority);
clientGrantedAuthorityEntities.add(clientGrantedAuthorityEntity);
}
Expand All @@ -172,7 +173,7 @@ private SortedSet<ClientRedirectUriEntity> getClientRegisteredRedirectUris(Set<R
SortedSet<ClientRedirectUriEntity> clientRedirectUriEntities = new TreeSet<ClientRedirectUriEntity>();
for (RedirectUri clientRegisteredRedirectUri : clientRegisteredRedirectUris) {
ClientRedirectUriEntity clientRedirectUriEntity = new ClientRedirectUriEntity();
clientRedirectUriEntity.setClientDetailsEntity(clientDetailsEntity);
clientRedirectUriEntity.setClientId(clientDetailsEntity.getClientId());
clientRedirectUriEntity.setRedirectUri(clientRegisteredRedirectUri.getValue());
clientRedirectUriEntity.setRedirectUriType(clientRegisteredRedirectUri.getType().value());
List<ScopePathType> scopesForRedirect = clientRegisteredRedirectUri.getScope();
Expand All @@ -189,7 +190,7 @@ private Set<ClientAuthorisedGrantTypeEntity> getClientAuthorizedGrantTypes(Set<S
Set<ClientAuthorisedGrantTypeEntity> clientAuthorisedGrantTypeEntities = new HashSet<ClientAuthorisedGrantTypeEntity>(clientAuthorizedGrantTypes.size());
for (String clientAuthorisedGrantType : clientAuthorizedGrantTypes) {
ClientAuthorisedGrantTypeEntity grantTypeEntity = new ClientAuthorisedGrantTypeEntity();
grantTypeEntity.setClientDetailsEntity(clientDetailsEntity);
grantTypeEntity.setClientId(clientDetailsEntity.getClientId());
grantTypeEntity.setGrantType(clientAuthorisedGrantType);
clientAuthorisedGrantTypeEntities.add(grantTypeEntity);
}
Expand Down
Loading