Skip to content

Commit

Permalink
[SHIBUI-906]
Browse files Browse the repository at this point in the history
Updated building of overrides from attributes. Now, we use the override
property to get the property name from the attribute name.. and we skip
any attributes that aren't defined in the yaml.
  • Loading branch information
Bill Smith committed Oct 16, 2018
1 parent e762644 commit 81fd5bf
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import edu.internet2.tier.shibboleth.admin.ui.domain.OrganizationName;
import edu.internet2.tier.shibboleth.admin.ui.domain.OrganizationURL;
import edu.internet2.tier.shibboleth.admin.ui.domain.PrivacyStatementURL;
import edu.internet2.tier.shibboleth.admin.ui.domain.RelyingPartyOverrideProperty;
import edu.internet2.tier.shibboleth.admin.ui.domain.SPSSODescriptor;
import edu.internet2.tier.shibboleth.admin.ui.domain.SingleLogoutService;
import edu.internet2.tier.shibboleth.admin.ui.domain.UIInfo;
Expand All @@ -37,7 +38,6 @@
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.LogoutEndpointRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.MduiRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.OrganizationRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.RelyingPartyOverridesRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.SecurityInfoRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.ServiceProviderSsoDescriptorRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects;
Expand All @@ -57,12 +57,9 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;

import static edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions.getBooleanValueOfAttribute;
import static edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions.getStringListOfAttributeValues;
import static edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions.getStringListValueOfAttribute;

/**
* Default implementation of {@link EntityDescriptorService}
*
Expand Down Expand Up @@ -496,8 +493,11 @@ public EntityDescriptorRepresentation createRepresentationFromDescriptor(org.ope
for (org.opensaml.saml.saml2.core.Attribute attribute : ((EntityAttributes) ed.getExtensions().getUnknownXMLObjects(EntityAttributes.DEFAULT_ELEMENT_NAME).get(0)).getAttributes()) {
Attribute jpaAttribute = (Attribute) attribute;

relyingPartyOverrides.put(ModelRepresentationConversions.getAttributeNameFromFriendlyName(jpaAttribute.getFriendlyName()),
jpaAttribute.getAttributeValues());
Optional override = ModelRepresentationConversions.getOverrideByAttributeName(jpaAttribute.getName());
if (override.isPresent()) {
relyingPartyOverrides.put(((RelyingPartyOverrideProperty)override.get()).getName(),
jpaAttribute.getAttributeValues());
}
}

representation.setRelyingPartyOverrides(relyingPartyOverrides);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,23 +78,21 @@ public static List<String> getStringListValueOfAttribute(Attribute attribute) {
return getStringListOfAttributeValues(attribute.getAttributeValues());
}

public static String getAttributeNameFromFriendlyName(String attributeFriendlyName) {
Optional override = customPropertiesConfiguration.getOverrides().stream().filter(it -> it.getAttributeFriendlyName().equals(attributeFriendlyName)).findFirst();
if (!override.isPresent()) {
// WAT? Somehow we persisted a property that we're not configured for. This shouldn't happen.
throw new RuntimeException("Persisted attribute with friendlyName \"" + attributeFriendlyName + "\" doesn't have a matching configuration in application.yml!");
}
return ((RelyingPartyOverrideProperty)override.get()).getName();
}
public static Optional getOverrideByAttributeName(String attributeName) {
return customPropertiesConfiguration.getOverrides().stream().filter(it -> it.getAttributeName().equals(attributeName)).findFirst();
}

public static Map<String, Object> getRelyingPartyOverridesRepresentationFromAttributeList(List<Attribute> attributeList) {
Map<String, Object> relyingPartyOverrides = new HashMap<>();

for (org.opensaml.saml.saml2.core.Attribute attribute : attributeList) {
Attribute jpaAttribute = (Attribute) attribute;

relyingPartyOverrides.put(getAttributeNameFromFriendlyName(jpaAttribute.getFriendlyName()),
getOverrideFromAttribute(jpaAttribute));
Optional override = getOverrideByAttributeName(jpaAttribute.getName());
if (override.isPresent()) {
relyingPartyOverrides.put(((RelyingPartyOverrideProperty)override.get()).getName(),
getOverrideFromAttribute(jpaAttribute));
}
}

return relyingPartyOverrides;
Expand Down

0 comments on commit 81fd5bf

Please sign in to comment.