From 7d5d5f61ff5e6b34e9fddd9599276e846251d1a9 Mon Sep 17 00:00:00 2001 From: rmiccoli Date: Wed, 16 Oct 2024 14:50:51 +0200 Subject: [PATCH] Rebase to develop branch --- .../account_linking/DefaultAccountLinkingService.java | 2 +- .../x509/X509AuthenticationIntegrationTests.java | 4 ++-- .../repository/IamX509CertificateRepository.java | 11 +++++++++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/iam-login-service/src/main/java/it/infn/mw/iam/api/account_linking/DefaultAccountLinkingService.java b/iam-login-service/src/main/java/it/infn/mw/iam/api/account_linking/DefaultAccountLinkingService.java index a78a4979b..e483bce3d 100644 --- a/iam-login-service/src/main/java/it/infn/mw/iam/api/account_linking/DefaultAccountLinkingService.java +++ b/iam-login-service/src/main/java/it/infn/mw/iam/api/account_linking/DefaultAccountLinkingService.java @@ -143,7 +143,7 @@ public void linkX509Certificate(Principal authenticatedUser, IamAccount userAccount = findAccount(authenticatedUser); Optional linkedAccount = - certificateRepository.findBySubject(x509Credential.getSubject()).stream().findFirst(); + certificateRepository.findBySubjectDn(x509Credential.getSubject()).stream().findFirst(); // check if the x509Credential is linked to another user if (linkedAccount.isPresent() && !linkedAccount.get().getUuid().equals(userAccount.getUuid())) { diff --git a/iam-login-service/src/test/java/it/infn/mw/iam/test/ext_authn/x509/X509AuthenticationIntegrationTests.java b/iam-login-service/src/test/java/it/infn/mw/iam/test/ext_authn/x509/X509AuthenticationIntegrationTests.java index c66f7bdf6..973ab3dda 100644 --- a/iam-login-service/src/test/java/it/infn/mw/iam/test/ext_authn/x509/X509AuthenticationIntegrationTests.java +++ b/iam-login-service/src/test/java/it/infn/mw/iam/test/ext_authn/x509/X509AuthenticationIntegrationTests.java @@ -191,7 +191,7 @@ public void testx509AccountLinking() throws Exception { flash().attribute(ACCOUNT_LINKING_DASHBOARD_MESSAGE_KEY, equalTo(confirmationMessage))); Optional linkedUser = - iamX509CertificateRepo.findBySubject(TEST_0_SUBJECT).stream().findFirst(); + iamX509CertificateRepo.findBySubjectDn(TEST_0_SUBJECT).stream().findFirst(); assertThat(linkedUser.isPresent(), is(true)); assertThat(linkedUser.get().getUsername(), is("test")); @@ -283,7 +283,7 @@ public void testUpdateCertWithSameIssuerAndSubjectButDifferentPem() throws Excep flash().attribute(ACCOUNT_LINKING_DASHBOARD_MESSAGE_KEY, equalTo(confirmationMessage))); Optional testCert = - iamX509CertificateRepo.findBySubjectAndIssuer(TEST_0_SUBJECT, TEST_0_ISSUER); + iamX509CertificateRepo.findBySubjectDnAndIssuerDn(TEST_0_SUBJECT, TEST_0_ISSUER); assertThat(testCert.isPresent(), is(true)); assertThat( account.getX509Certificates() diff --git a/iam-persistence/src/main/java/it/infn/mw/iam/persistence/repository/IamX509CertificateRepository.java b/iam-persistence/src/main/java/it/infn/mw/iam/persistence/repository/IamX509CertificateRepository.java index 142610c2f..db7854ff1 100644 --- a/iam-persistence/src/main/java/it/infn/mw/iam/persistence/repository/IamX509CertificateRepository.java +++ b/iam-persistence/src/main/java/it/infn/mw/iam/persistence/repository/IamX509CertificateRepository.java @@ -15,15 +15,22 @@ */ package it.infn.mw.iam.persistence.repository; +import java.util.List; import java.util.Optional; +import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; +import it.infn.mw.iam.persistence.model.IamAccount; import it.infn.mw.iam.persistence.model.IamX509Certificate; public interface IamX509CertificateRepository - extends PagingAndSortingRepository { + extends PagingAndSortingRepository { - public Optional findBySubjectDnAndIssuerDn(String subjectDn, String issuerDn); + @Query("select c.account from IamX509Certificate c where c.subjectDn = :subject") + List findBySubjectDn(@Param("subject") String subject); + + public Optional findBySubjectDnAndIssuerDn(String subjectDn, String issuerDn); }