Skip to content

Commit

Permalink
[SHIBUI-704]
Browse files Browse the repository at this point in the history
WIP
  • Loading branch information
jj committed Nov 26, 2018
1 parent bd1195d commit fe6f10c
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 547 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
package edu.internet2.tier.shibboleth.admin.ui.configuration

import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityAttributesFilter
import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityAttributesFilterTarget
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.DynamicHttpMetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.FileBackedHttpMetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.HttpMetadataResolverAttributes
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataQueryProtocolScheme
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.ReloadableMetadataResolverAttributes
import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository
import edu.internet2.tier.shibboleth.admin.ui.security.model.Role
import edu.internet2.tier.shibboleth.admin.ui.security.model.User
import edu.internet2.tier.shibboleth.admin.ui.security.repository.UserRepository
import edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Profile
import org.springframework.stereotype.Component
import org.springframework.transaction.annotation.Transactional
Expand All @@ -14,8 +25,11 @@ import javax.annotation.PostConstruct
class DevConfig {
private final UserRepository adminUserRepository

DevConfig(UserRepository adminUserRepository) {
private final MetadataResolverRepository metadataResolverRepository

DevConfig(UserRepository adminUserRepository, MetadataResolverRepository metadataResolverRepository) {
this.adminUserRepository = adminUserRepository
this.metadataResolverRepository = metadataResolverRepository
}

@Transactional
Expand All @@ -32,4 +46,55 @@ class DevConfig {
adminUserRepository.save(user)
}
}

@Transactional
@Profile('fbhmr')
@Bean
MetadataResolver fbhmr(ModelRepresentationConversions modelRepresentationConversions) {
return this.metadataResolverRepository.save(new FileBackedHttpMetadataResolver().with {
enabled = true
xmlId = 'test-fbhmr'
name = 'test-fbhmr'
metadataURL = 'http://md.incommon.org/InCommon/InCommon-metadata.xml'
backingFile = '%{idp.home}/test-fbhmr.xml'
reloadableMetadataResolverAttributes = new ReloadableMetadataResolverAttributes()
httpMetadataResolverAttributes = new HttpMetadataResolverAttributes()
it.metadataFilters.add(new EntityAttributesFilter().with {
it.name = 'test'
it.filterEnabled = true
it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with {
it.entityAttributesFilterTargetType = EntityAttributesFilterTarget.EntityAttributesFilterTargetType.ENTITY
it.value = ["https://carmenwiki.osu.edu/shibboleth"]
return it
}
it.attributeRelease = ['eduPersonPrincipalName', 'givenName', 'surname', 'mail']
return it
})
return it
})
}

@Profile('dhmr')
@Transactional
@Bean
MetadataResolver dhmr(ModelRepresentationConversions modelRepresentationConversions) {
return this.metadataResolverRepository.save(new DynamicHttpMetadataResolver().with {
it.enabled = true
it.xmlId = 'test-dhmr'
it.name = 'test-dhmr'
it.metadataRequestURLConstructionScheme = new MetadataQueryProtocolScheme(content: 'http://mdq-beta.incommon.org/global')
it.metadataFilters.add(new EntityAttributesFilter().with {
it.name = 'test'
it.filterEnabled = true
it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with {
it.entityAttributesFilterTargetType = EntityAttributesFilterTarget.EntityAttributesFilterTargetType.ENTITY
it.value = ["https://carmenwiki.osu.edu/shibboleth"]
return it
}
it.attributeRelease = ['eduPersonPrincipalName', 'givenName', 'surname', 'mail']
return it
})
return it
})
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository;
import edu.internet2.tier.shibboleth.admin.ui.service.IndexWriterService;
import edu.internet2.tier.shibboleth.admin.ui.service.MetadataResolverConverterService;
import edu.internet2.tier.shibboleth.admin.ui.service.TokenPlaceholderValueResolvingService;
import edu.internet2.tier.shibboleth.admin.util.TokenPlaceholderResolvers;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.resolver.ResolverException;
Expand All @@ -16,10 +15,12 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.Transactional;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

/**
* this is a temporary class until a better way of doing this is found.
Expand All @@ -41,9 +42,10 @@ public class MetadataResolverConfiguration {
MetadataResolverConverterService metadataResolverConverterService;

@Bean
@Transactional
//This injected dependency makes sure that this bean has been created and the wrapped placeholder resolver service
//is available via static facade accessor method to all the downstream non-Spring managed consumers
public MetadataResolver metadataResolver(TokenPlaceholderResolvers tokenPlaceholderResolvers) throws ResolverException, ComponentInitializationException {
public MetadataResolver metadataResolver(TokenPlaceholderResolvers tokenPlaceholderResolvers, Set<edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolver> metadataResolvers) throws ResolverException, ComponentInitializationException {
ChainingMetadataResolver metadataResolver = new OpenSamlChainingMetadataResolver();
metadataResolver.setId("chain");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,9 +219,11 @@ public void setNil(@Nullable XSBooleanValue xsBooleanValue) {

}

private transient final LockableClassToInstanceMultiMap<Object> objectMetadata = new LockableClassToInstanceMultiMap<>(true);

@Nonnull
public LockableClassToInstanceMultiMap<Object> getObjectMetadata() {
return null;
return objectMetadata;
}

public String getSchemaTypeNamespaceURI() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml;

import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.DynamicHttpMetadataResolver;
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataRequestURLConstructionScheme;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.xml.ParserPool;
import org.apache.http.impl.client.HttpClients;
import org.apache.lucene.index.IndexWriter;
import org.opensaml.saml.metadata.resolver.impl.FunctionDrivenDynamicHTTPMetadataResolver;
import org.opensaml.saml.metadata.resolver.impl.MetadataQueryProtocolRequestURLBuilder;

/**
* @author Bill Smith (wsmith@unicon.net)
Expand Down Expand Up @@ -37,6 +39,15 @@ public OpenSamlFunctionDrivenDynamicHTTPMetadataResolver(ParserPool parserPool,
// In the parser, if not null, a warning is logged .. but nothing else happens with them.
// sourceResolver.getMaxConnectionsPerRoute();
// sourceResolver.getMaxConnectionsTotal();

switch (MetadataRequestURLConstructionScheme.SchemeType.get(sourceResolver.getMetadataRequestURLConstructionScheme().getType())) {
case METADATA_QUERY_PROTOCOL:
this.setRequestURLBuilder(new MetadataQueryProtocolRequestURLBuilder(sourceResolver.getMetadataRequestURLConstructionScheme().getContent()));
break;
// TODO: write other cases
default:
break;
}
}

@Override
Expand Down
Loading

0 comments on commit fe6f10c

Please sign in to comment.