From fcef776165bed8560633e0d78dfbdc97c722492b Mon Sep 17 00:00:00 2001 From: chasegawa Date: Tue, 20 Sep 2022 12:35:54 -0700 Subject: [PATCH] SHIBUI-2380 Incremental commit: --- .../JPAEntityDescriptorServiceImpl.java | 1 + .../util/EntityDescriptorConversionUtils.java | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImpl.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImpl.java index 8e400949c..d40fd9255 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImpl.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImpl.java @@ -85,6 +85,7 @@ public class JPAEntityDescriptorServiceImpl implements EntityDescriptorService { private EntityDescriptor buildDescriptorFromRepresentation(final EntityDescriptor ed, final EntityDescriptorRepresentation representation) { ed.setEntityID(representation.getEntityId()); ed.setIdOfOwner(representation.getIdOfOwner()); + ed.setProtocol(representation.getProtocol()); // SAML vs OIDC setupSPSSODescriptor(ed, representation); ed.setServiceProviderName(representation.getServiceProviderName()); diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/util/EntityDescriptorConversionUtils.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/util/EntityDescriptorConversionUtils.java index 3034d5c7d..f2ed82f82 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/util/EntityDescriptorConversionUtils.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/util/EntityDescriptorConversionUtils.java @@ -1,7 +1,6 @@ package edu.internet2.tier.shibboleth.admin.util; import static edu.internet2.tier.shibboleth.admin.util.EntityDescriptorConversionUtils.getEntityAttributes; -import static edu.internet2.tier.shibboleth.admin.util.EntityDescriptorConversionUtils.getOptionalEntityAttributes; import static edu.internet2.tier.shibboleth.admin.util.EntityDescriptorConversionUtils.getSPSSODescriptorFromEntityDescriptor; import java.util.Arrays; @@ -9,6 +8,9 @@ import java.util.Optional; import java.util.stream.Collectors; +import edu.internet2.tier.shibboleth.admin.ui.domain.EntityDescriptorProtocol; +import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.ServiceProviderSsoDescriptorRepresentation; +import lombok.NonNull; import org.opensaml.xmlsec.signature.KeyInfo; import org.opensaml.xmlsec.signature.X509Certificate; import org.opensaml.xmlsec.signature.X509Data; @@ -280,7 +282,7 @@ public static void setupSecurity(EntityDescriptor ed, EntityDescriptorRepresenta } public static void setupSPSSODescriptor(EntityDescriptor ed, EntityDescriptorRepresentation representation) { - if (representation.getServiceProviderSsoDescriptor() != null) { + if (representation.getServiceProviderSsoDescriptor() != null || representation.getProtocol() == EntityDescriptorProtocol.OIDC) { SPSSODescriptor spssoDescriptor = getSPSSODescriptorFromEntityDescriptor(ed); spssoDescriptor.setSupportedProtocols(Collections.EMPTY_LIST); @@ -300,11 +302,21 @@ public static void setupSPSSODescriptor(EntityDescriptor ed, EntityDescriptorRep spssoDescriptor.getNameIDFormats().add(nameIDFormat); } } + + if (representation.getProtocol() == EntityDescriptorProtocol.OIDC) { + spssoDescriptor.setExtensions(buildOidcExtensionsFromRepresentation(representation.getServiceProviderSsoDescriptor(false))); + } } else { ed.setRoleDescriptors(null); } } - + + private static Extensions buildOidcExtensionsFromRepresentation(@NonNull ServiceProviderSsoDescriptorRepresentation representation) { + Extensions result = new Extensions(); + + return result; + } + public static void setupUIInfo(EntityDescriptor ed, EntityDescriptorRepresentation representation) { if (representation.getMdui() != null) { // TODO: check if we need more than a naive implementation