Skip to content

Commit

Permalink
SHIBUI-704 merge
Browse files Browse the repository at this point in the history
  • Loading branch information
rmathis committed Nov 16, 2018
2 parents 74a6f28 + 50043c3 commit fa55443
Show file tree
Hide file tree
Showing 21 changed files with 569 additions and 122 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.DynamicHttpMetada
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.FileBackedHttpMetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.FilesystemMetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.LocalDynamicMetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataQueryProtocolScheme
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataRequestURLConstructionScheme
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.RegexScheme
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.ResourceBackedMetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.TemplateScheme
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml.OpenSamlChainingMetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml.Refilterable
import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects
Expand Down Expand Up @@ -287,6 +291,36 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService {
httpMaxCacheEntries: resolver.httpMetadataResolverAttributes?.httpMaxCacheEntries,
httpMaxCacheEntrySize: resolver.httpMetadataResolverAttributes?.httpMaxCacheEntrySize) {

switch (MetadataRequestURLConstructionScheme.SchemeType.get(resolver.metadataRequestURLConstructionScheme.type)) {
case MetadataRequestURLConstructionScheme.SchemeType.METADATA_QUERY_PROTOCOL:
MetadataQueryProtocolScheme scheme = (MetadataQueryProtocolScheme) resolver.metadataRequestURLConstructionScheme
MetadataQueryProtocol(transformRef: scheme.transformRef) {
if (scheme.content != null) {
mkp.yield(scheme.content)
}
}
break
case MetadataRequestURLConstructionScheme.SchemeType.TEMPLATE:
TemplateScheme scheme = (TemplateScheme) resolver.metadataRequestURLConstructionScheme
Template(encodingStyle: scheme.encodingStyle,
transformRef: scheme.transformRef,
velocityEngine: scheme.velocityEngine) {
if (scheme.content != null) {
mkp.yield(scheme.content)
}
}
break
case MetadataRequestURLConstructionScheme.SchemeType.REGEX:
RegexScheme scheme = (RegexScheme) resolver.metadataRequestURLConstructionScheme
Regex(match: scheme.match) {
if (scheme.content != null) {
mkp.yield(scheme.content)
}
}
break
default:
break
}
childNodes()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
import lombok.Setter;
import lombok.ToString;

import javax.persistence.CascadeType;
import javax.persistence.ElementCollection;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.OneToOne;
import javax.persistence.OrderColumn;
import java.util.List;

Expand Down Expand Up @@ -36,6 +38,9 @@ public class DynamicHttpMetadataResolver extends MetadataResolver {
@OrderColumn
private List<String> supportedContentTypes;

@OneToOne(cascade = CascadeType.ALL)
private MetadataRequestURLConstructionScheme metadataRequestURLConstructionScheme;

public DynamicHttpMetadataResolver() {
type = "DynamicHttpMetadataResolver";
this.httpMetadataResolverAttributes = new HttpMetadataResolverAttributes();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.Entity;

/**
* @author Bill Smith (wsmith@unicon.net)
*/
@Entity
@Getter
@Setter
@EqualsAndHashCode(callSuper = true)
public class MetadataQueryProtocolScheme extends MetadataRequestURLConstructionScheme {

public MetadataQueryProtocolScheme() {
type = "MetadataQueryProtocol";
}

private String transformRef;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import edu.internet2.tier.shibboleth.admin.ui.domain.AbstractAuditable;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.Entity;
import javax.persistence.Transient;
import java.util.HashMap;
import java.util.Map;

/**
* @author Bill Smith (wsmith@unicon.net)
*/
@Entity
@Getter
@Setter
@EqualsAndHashCode(callSuper = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "@type", visible = true)
@JsonSubTypes({@JsonSubTypes.Type(value=MetadataQueryProtocolScheme.class, name="MetadataQueryProtocol"),
@JsonSubTypes.Type(value=TemplateScheme.class, name="Template"),
@JsonSubTypes.Type(value=RegexScheme.class, name="Regex")})
public abstract class MetadataRequestURLConstructionScheme extends AbstractAuditable {
public enum SchemeType {
METADATA_QUERY_PROTOCOL("MetadataQueryProtocol"),
TEMPLATE("Template"),
REGEX("Regex");

private String schemeType;
private static final Map<String, SchemeType> lookup = new HashMap<>();

static {
for (SchemeType schemeType : SchemeType.values()) {
lookup.put(schemeType.toString(), schemeType);
}
}

SchemeType(String schemeType) {
this.schemeType = schemeType;
}

public static SchemeType get(String schemeType) {
return lookup.get(schemeType);
}

@Override
public String toString() {
return schemeType;
}
}

@JsonProperty("@type")
@Transient
String type;

String content;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.Entity;
import javax.validation.constraints.NotNull;

/**
* @author Bill Smith (wsmith@unicon.net)
*/
@Entity
@Getter
@Setter
@EqualsAndHashCode(callSuper = true)
public class RegexScheme extends MetadataRequestURLConstructionScheme {

public RegexScheme() {
type = "Regex";
}

@NotNull
private String match;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.Entity;

/**
* @author Bill Smith (wsmith@unicon.net)
*/
@Entity
@Getter
@Setter
@EqualsAndHashCode(callSuper = true)
public class TemplateScheme extends MetadataRequestURLConstructionScheme {

public TemplateScheme () {
type = "Template";
}

public enum EncodingStyle {
NONE, FORM, PATH, FRAGMENT
}

private EncodingStyle encodingStyle = EncodingStyle.FORM;

private String transformRef;

private String velocityEngine = "shibboleth.VelocityEngine";
}
114 changes: 108 additions & 6 deletions backend/src/main/resources/dynamic-http-metadata-provider.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,114 @@
"default": "",
"minLength": 1
},
"metadataURL": {
"title": "label.metadata-url",
"description": "tooltip.metadata-url",
"type": "string",
"default": "",
"minLength": 1
"metadataRequestURLConstructionScheme": {
"type": "object",
"properties": {
"@type": {
"title": "label.md-request-type",
"description": "tooltip.md-request-type",
"type": "string",
"widget": {
"id": "select"
},
"oneOf": [
{
"enum": [
"MetadataQueryProtocol"
],
"description": "value.md-query-protocol"
},
{
"enum": [
"Template"
],
"description": "value.template"
},
{
"enum": [
"Regex"
],
"description": "value.regex"
}
]
},
"content": {
"title": "label.md-request-value",
"description": "tooltip.md-request-value",
"type": "string"
},
"transformRef": {
"title": "label.transform-ref",
"description": "tooltip.transform-ref",
"type": "string",
"visibleIf": {
"content": [
""
]
}
},
"encodingStyle": {
"title": "label.encoding-style",
"description": "tooltip.encoding-style",
"type": "string",
"widget": {
"id": "select"
},
"default": "FORM",
"oneOf": [
{
"enum": [
"NONE"
],
"description": "None"
},
{
"enum": [
"FORM"
],
"description": "Form"
},
{
"enum": [
"PATH"
],
"description": "Path"
},
{
"enum": [
"FRAGMENT"
],
"description": "Fragment"
}
],
"visibleIf": {
"@type": [
"Template"
]
}
},
"velocityEngine": {
"title": "label.velocity-engine",
"description": "tooltip.velocity-engine",
"type": "string",
"default": "shibboleth.VelocityEngine",
"visibleIf": {
"@type": [
"Template"
]
}
},
"match": {
"title": "label.match",
"description": "tooltip.match",
"type": "string",
"visibleIf": {
"@type": [
"Regex"
]
}
}
}
},
"requireValidMetadata": {
"title": "label.require-valid-metadata",
Expand Down
Loading

0 comments on commit fa55443

Please sign in to comment.