[java-identity-provider] branch master updated: IDP-1121 - V4 Deprecation work - Attribute Resolver

Scott Cantor cantor.2 at osu.edu
Wed Feb 6 15:15:31 EST 2019


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch master
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=96fa3ece1eef85bab737c93eff8e03738a0b2f45

The following commit(s) were added to refs/heads/master by this push:
       new  96fa3ec   IDP-1121 - V4 Deprecation work - Attribute Resolver
96fa3ec is described below

commit 96fa3ece1eef85bab737c93eff8e03738a0b2f45
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Feb 6 15:15:28 2019 -0500

    IDP-1121 - V4 Deprecation work - Attribute Resolver
    
    https://issues.shibboleth.net/jira/browse/IDP-1121
    
    Removal of transient AttributeDefinitions.
---
 ...CryptoTransientIdAttributeDefinitionParser.java |  84 ----------
 .../impl/TransientIdAttributeDefinitionParser.java |  89 ----------
 .../impl/AttributeResolverNamespaceHandler.java    |   6 -
 ...toTransientIdAttributeDefinitionParserTest.java |  62 -------
 .../ad/TemplateAttributeDefinitionParserTest.java  |   1 -
 .../TransientIdAttributeDefinitionParserTest.java  |  69 --------
 .../resolver/spring/ad/resolver/cryptoNoTime.xml   |   7 -
 .../resolver/spring/ad/resolver/cryptoWithTime.xml |  11 --
 .../spring/ad/resolver/transientNoTime.xml         |   6 -
 .../spring/ad/resolver/transientWithTime.xml       |  10 --
 .../impl/TransientIdAttributeDefinition.java       | 144 ----------------
 .../CryptoTransientIdAttributeDefinitionTest.java  | 154 -----------------
 .../impl/TransientIdAttributeDefinitionTest.java   | 186 ---------------------
 .../impl/CryptoTransientNameIDDecoderTest.java     |  51 ++----
 .../CryptoTransientNameIdentifierDecoderTest.java  |  46 ++---
 .../idp/saml/nameid/impl/TransientDecoderTest.java |  64 ++-----
 .../schema/shibboleth-attribute-resolver.xsd       |  54 +-----
 17 files changed, 44 insertions(+), 1000 deletions(-)

diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/CryptoTransientIdAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/CryptoTransientIdAttributeDefinitionParser.java
deleted file mode 100644
index 8d77ce9..0000000
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/CryptoTransientIdAttributeDefinitionParser.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.attribute.resolver.spring.ad.impl;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import javax.xml.namespace.QName;
-
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
-import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
-import net.shibboleth.idp.saml.attribute.resolver.impl.TransientIdAttributeDefinition;
-import net.shibboleth.idp.saml.nameid.impl.CryptoTransientIdGenerationStrategy;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
-import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.support.BeanDefinitionBuilder;
-import org.springframework.beans.factory.xml.ParserContext;
-import org.w3c.dom.Element;
-
-/**
- * Spring bean definition parser for {@link TransientIdAttributeDefinition} using a
- * {@link CryptoTransientIdGenerationStrategy}.
- */
- at SuppressWarnings("deprecation")
-public class CryptoTransientIdAttributeDefinitionParser extends BaseAttributeDefinitionParser {
-
-    /** Schema type name. */
-    @Nonnull public static final QName TYPE_NAME_RESOLVER = new QName(AttributeResolverNamespaceHandler.NAMESPACE,
-            "CryptoTransientId");
-
-    /** Class logger. */
-    @Nonnull private final Logger log = LoggerFactory.getLogger(CryptoTransientIdAttributeDefinitionParser.class);
-
-    /** {@inheritDoc} */
-    @Override protected Class<TransientIdAttributeDefinition> getBeanClass(@Nullable final Element element) {
-        return TransientIdAttributeDefinition.class;
-    }
-
-    /** {@inheritDoc} */
-    @Override protected void doParse(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
-            @Nonnull final BeanDefinitionBuilder builder) {
-        super.doParse(config, parserContext, builder);
-
-        final BeanDefinitionBuilder strategyBuilder =
-                BeanDefinitionBuilder.genericBeanDefinition(CryptoTransientIdGenerationStrategy.class);
-
-        strategyBuilder.setInitMethodName("initialize");
-        strategyBuilder.addPropertyValue("id", "CryptoTransientIdGenerationStrategy:" + getDefinitionId());
-
-        if (config.hasAttributeNS(null, "lifetime")) {
-            strategyBuilder.addPropertyValue("idLifetime",
-                    StringSupport.trimOrNull(config.getAttributeNS(null, "lifetime")));
-        }
-
-        strategyBuilder.addPropertyReference("dataSealer",
-                StringSupport.trimOrNull(config.getAttributeNS(null, "dataSealerRef")));
-
-        builder.addPropertyValue("transientIdGenerationStrategy", strategyBuilder.getBeanDefinition());
-
-        DeprecationSupport.warnOnce(ObjectType.XSITYPE, DOMTypeSupport.getXSIType(config).toString(),
-                parserContext.getReaderContext().getResource().getDescription(),
-                "via NameID Generation Service configuration");
-    }
-
-}
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/TransientIdAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/TransientIdAttributeDefinitionParser.java
deleted file mode 100644
index 83d2619..0000000
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/TransientIdAttributeDefinitionParser.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.attribute.resolver.spring.ad.impl;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import javax.xml.namespace.QName;
-
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
-import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
-import net.shibboleth.idp.saml.attribute.resolver.impl.TransientIdAttributeDefinition;
-import net.shibboleth.idp.saml.nameid.impl.StoredTransientIdGenerationStrategy;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
-import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.support.BeanDefinitionBuilder;
-import org.springframework.beans.factory.xml.ParserContext;
-import org.w3c.dom.Element;
-
-/**
- * Spring bean definition parser for {@link TransientIdAttributeDefinition} using a
- * {@link StoredTransientIdGenerationStrategy}.
- */
- at SuppressWarnings("deprecation")
-public class TransientIdAttributeDefinitionParser extends BaseAttributeDefinitionParser {
-
-    /** Schema type name. */
-    @Nonnull public static final QName TYPE_NAME_RESOLVER =
-            new QName(AttributeResolverNamespaceHandler.NAMESPACE, "TransientId");
-
-    /** Class logger. */
-    @Nonnull private final Logger log = LoggerFactory.getLogger(TransientIdAttributeDefinitionParser.class);
-
-    /** {@inheritDoc} */
-    @Override protected Class<TransientIdAttributeDefinition> getBeanClass(@Nullable final Element element) {
-        return TransientIdAttributeDefinition.class;
-    }
-
-    /** {@inheritDoc} */
-    @Override protected void doParse(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
-            @Nonnull final BeanDefinitionBuilder builder) {
-        super.doParse(config, parserContext, builder);
-
-        final BeanDefinitionBuilder strategyBuilder =
-                BeanDefinitionBuilder.genericBeanDefinition(StoredTransientIdGenerationStrategy.class);
-
-        strategyBuilder.setInitMethodName("initialize");
-        strategyBuilder.addPropertyValue("id", "StoredTransientIdGenerationStrategy:" + getDefinitionId());
-
-        if (config.hasAttributeNS(null, "lifetime")) {
-            strategyBuilder.addPropertyValue("idLifetime",
-                    StringSupport.trimOrNull(config.getAttributeNS(null, "lifetime")));
-        }
-
-        String idStore = "shibboleth.StorageService";
-        if (config.hasAttributeNS(null, "storageServiceRef")) {
-            idStore = StringSupport.trimOrNull(config.getAttributeNS(null, "storageServiceRef"));
-        }
-
-        log.debug("{} idStore '{}'", getLogPrefix(), idStore);
-        strategyBuilder.addPropertyReference("idStore", idStore);
-
-        builder.addPropertyValue("transientIdGenerationStrategy", strategyBuilder.getBeanDefinition());
-
-        DeprecationSupport.warnOnce(ObjectType.XSITYPE, DOMTypeSupport.getXSIType(config).toString(),
-                parserContext.getReaderContext().getResource().getDescription(),
-                "via NameID Generation Service configuration");
-    }
-
-}
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverNamespaceHandler.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverNamespaceHandler.java
index dd1e044..0b03fbd 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverNamespaceHandler.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverNamespaceHandler.java
@@ -23,7 +23,6 @@ import org.springframework.beans.factory.xml.BeanDefinitionParser;
 
 import net.shibboleth.ext.spring.util.BaseSpringNamespaceHandler;
 import net.shibboleth.idp.attribute.resolver.spring.ad.impl.ContextDerivedAttributeDefinitionParser;
-import net.shibboleth.idp.attribute.resolver.spring.ad.impl.CryptoTransientIdAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.ad.impl.PrescopedAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.ad.impl.PrincipalNameAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.ad.impl.RegexSplitAttributeDefinitionParser;
@@ -34,7 +33,6 @@ import net.shibboleth.idp.attribute.resolver.spring.ad.impl.ScriptedAttributeDef
 import net.shibboleth.idp.attribute.resolver.spring.ad.impl.SimpleAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.ad.impl.SubjectDerivedAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.ad.impl.TemplateAttributeDefinitionParser;
-import net.shibboleth.idp.attribute.resolver.spring.ad.impl.TransientIdAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.ad.mapped.impl.MappedAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.ad.mapped.impl.SourceValueParser;
 import net.shibboleth.idp.attribute.resolver.spring.ad.mapped.impl.ValueMapParser;
@@ -72,8 +70,6 @@ public class AttributeResolverNamespaceHandler extends BaseSpringNamespaceHandle
         registerBeanDefinitionParser(InputAttributeDefinitionParser.ELEMENT_NAME, new InputAttributeDefinitionParser());
 
         // Attribute Resolvers
-        registerBeanDefinitionParser(CryptoTransientIdAttributeDefinitionParser.TYPE_NAME_RESOLVER,
-                new CryptoTransientIdAttributeDefinitionParser());
         registerBeanDefinitionParser(PrescopedAttributeDefinitionParser.TYPE_NAME_RESOLVER,
                 new PrescopedAttributeDefinitionParser());
         registerBeanDefinitionParser(PrincipalNameAttributeDefinitionParser.TYPE_NAME_RESOLVER,
@@ -97,8 +93,6 @@ public class AttributeResolverNamespaceHandler extends BaseSpringNamespaceHandle
                 new SimpleAttributeDefinitionParser());
         registerBeanDefinitionParser(TemplateAttributeDefinitionParser.TYPE_NAME_RESOLVER,
                 new TemplateAttributeDefinitionParser());
-        registerBeanDefinitionParser(TransientIdAttributeDefinitionParser.TYPE_NAME_RESOLVER,
-                new TransientIdAttributeDefinitionParser());
         registerBeanDefinitionParser(SourceValueParser.TYPE_NAME_RESOLVER, new SourceValueParser());
         registerBeanDefinitionParser(ValueMapParser.TYPE_NAME_RESOLVER, new ValueMapParser());
         registerBeanDefinitionParser(MappedAttributeDefinitionParser.TYPE_NAME_RESOLVER,
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/CryptoTransientIdAttributeDefinitionParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/CryptoTransientIdAttributeDefinitionParserTest.java
deleted file mode 100644
index 5ecdae0..0000000
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/CryptoTransientIdAttributeDefinitionParserTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.attribute.resolver.spring.ad;
-
-import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
-import net.shibboleth.idp.attribute.resolver.spring.ad.impl.CryptoTransientIdAttributeDefinitionParser;
-import net.shibboleth.idp.saml.attribute.resolver.impl.TransientIdAttributeDefinition;
-import net.shibboleth.idp.saml.nameid.impl.CryptoTransientIdGenerationStrategy;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-/**
- * test for {@link CryptoTransientIdAttributeDefinitionParser}
- */
- at SuppressWarnings("deprecation")
-public class CryptoTransientIdAttributeDefinitionParserTest extends BaseAttributeDefinitionParserTest {
-
-    private TransientIdAttributeDefinition getDefinition(String fileName) {
-
-        return getAttributeDefn(fileName, "sealer.xml", TransientIdAttributeDefinition.class);
-    }
-
-    @Test public void resolver() throws ComponentInitializationException {
-
-        TransientIdAttributeDefinition defn = getDefinition("resolver/cryptoWithTime.xml");
-
-        Assert.assertTrue(defn.isInitialized());
-
-        CryptoTransientIdGenerationStrategy strategy =
-                (CryptoTransientIdGenerationStrategy) defn.getTransientIdGenerationStrategy();
-
-        Assert.assertEquals(strategy.getIdLifetime(), 3 * 60 * 1000);
-    }
-
-    @Test public void noTime() throws ComponentInitializationException {
-
-        TransientIdAttributeDefinition defn = getDefinition("resolver/cryptoNoTime.xml");
-        Assert.assertTrue(defn.isInitialized());
-
-        CryptoTransientIdGenerationStrategy strategy =
-                (CryptoTransientIdGenerationStrategy) defn.getTransientIdGenerationStrategy();
-
-        Assert.assertEquals(strategy.getIdLifetime(), 4 * 3600 * 1000);
-    }
-}
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/TemplateAttributeDefinitionParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/TemplateAttributeDefinitionParserTest.java
index c5e6492..696267e 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/TemplateAttributeDefinitionParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/TemplateAttributeDefinitionParserTest.java
@@ -22,7 +22,6 @@ import org.testng.annotations.Test;
 
 import net.shibboleth.idp.attribute.resolver.ad.impl.TemplateAttributeDefinition;
 import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
-import net.shibboleth.idp.attribute.resolver.spring.ad.impl.CryptoTransientIdAttributeDefinitionParser;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 /**
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/TransientIdAttributeDefinitionParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/TransientIdAttributeDefinitionParserTest.java
deleted file mode 100644
index 387899d..0000000
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/TransientIdAttributeDefinitionParserTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.attribute.resolver.spring.ad;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
-import net.shibboleth.idp.attribute.resolver.spring.ad.impl.TransientIdAttributeDefinitionParser;
-import net.shibboleth.idp.saml.attribute.resolver.impl.TransientIdAttributeDefinition;
-import net.shibboleth.idp.saml.nameid.impl.StoredTransientIdGenerationStrategy;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-
-/**
- * test for {@link TransientIdAttributeDefinitionParser}
- */
- at SuppressWarnings("deprecation")
-public class TransientIdAttributeDefinitionParserTest extends BaseAttributeDefinitionParserTest {
-
-    private TransientIdAttributeDefinition getDefinition(String fileName) {
-
-        return getAttributeDefn(fileName, "idStore.xml", TransientIdAttributeDefinition.class);
-    }
-
-    @Test public void withTime() throws ComponentInitializationException {
-
-        final TransientIdAttributeDefinition defn = getAttributeDefn("resolver/transientWithTime.xml", "idStore2.xml",
-                TransientIdAttributeDefinition.class);
-
-        Assert.assertEquals(defn.getId(), "transientIdWithTime");
-
-        Assert.assertTrue(defn.isInitialized());
-
-        StoredTransientIdGenerationStrategy generator =
-                (StoredTransientIdGenerationStrategy) defn.getTransientIdGenerationStrategy();
-
-        Assert.assertEquals(generator.getIdLifetime(), 1000 * 60 * 3);
-        Assert.assertEquals(generator.getIdSize(), 16);
-    }
-
-    @Test public void noTime() throws ComponentInitializationException {
-
-        TransientIdAttributeDefinition defn = getDefinition("resolver/transientNoTime.xml");
-        Assert.assertTrue(defn.isInitialized());
-
-        StoredTransientIdGenerationStrategy generator =
-                (StoredTransientIdGenerationStrategy) defn.getTransientIdGenerationStrategy();
-
-        Assert.assertEquals(defn.getId(), "transientId");
-        Assert.assertEquals(generator.getIdLifetime(), 1000 * 60 * 60 * 4);
-        Assert.assertEquals(generator.getIdSize(), 16);
-    }
-
-}
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/cryptoNoTime.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/cryptoNoTime.xml
deleted file mode 100644
index bc16008..0000000
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/cryptoNoTime.xml
+++ /dev/null
@@ -1,7 +0,0 @@
- <AttributeDefinition 
-    xmlns="urn:mace:shibboleth:2.0:resolver"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
-    id="cryptoTransientId"
-    xsi:type="CryptoTransientId"
-    dataSealerRef="shibboleth.TransientIDDataSealer"
-    xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd"/>
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/cryptoWithTime.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/cryptoWithTime.xml
deleted file mode 100644
index 1d4c3a8..0000000
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/cryptoWithTime.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<AttributeDefinition 
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns="urn:mace:shibboleth:2.0:resolver"
-    
-    id="cryptoTransientId"
-    xsi:type="CryptoTransientId"
-    dataSealerRef="shibboleth.TransientIDDataSealer"
-    lifetime="PT3M"
-    xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd"
-    />
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/transientNoTime.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/transientNoTime.xml
deleted file mode 100644
index 77974b4..0000000
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/transientNoTime.xml
+++ /dev/null
@@ -1,6 +0,0 @@
- <AttributeDefinition 
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
-    xmlns="urn:mace:shibboleth:2.0:resolver"
-    id="transientId"
-    xsi:type="TransientId"
-    xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd"/>
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/transientWithTime.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/transientWithTime.xml
deleted file mode 100644
index f7b3ce5..0000000
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/transientWithTime.xml
+++ /dev/null
@@ -1,10 +0,0 @@
- <AttributeDefinition 
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns="urn:mace:shibboleth:2.0:resolver"
-    storageServiceRef="testStore"
-    id="transientIdWithTime"
-    xsi:type="TransientId"
-    lifetime="PT3M"
-    
-    xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd"
-    />
\ No newline at end of file
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinition.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinition.java
deleted file mode 100644
index b463953..0000000
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinition.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.attribute.resolver.impl;
-
-import java.util.Collections;
-
-import javax.annotation.Nonnull;
-
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.StringAttributeValue;
-import net.shibboleth.idp.attribute.resolver.AbstractAttributeDefinition;
-import net.shibboleth.idp.attribute.resolver.ResolutionException;
-import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
-import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
-import net.shibboleth.idp.saml.nameid.impl.TransientIdGenerationStrategy;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
-
-import org.opensaml.saml.common.SAMLException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Strings;
-
-/**
- * An attribute definition that generates random identifiers useful for transient subject IDs.
- * 
- * <p>
- * The generation in devolved to the supplied {@link TransientIdGenerationStrategy}, which will be a
- * {@link net.shibboleth.idp.saml.nameid.impl.StoredTransientIdGenerationStrategy} for the Transient and
- * {@link net.shibboleth.idp.saml.nameid.impl.CryptoTransientIdGenerationStrategy} for a CryptoTransient.
- * 
- * @deprecated
- */
-public class TransientIdAttributeDefinition extends AbstractAttributeDefinition {
-
-    /** Class logger. */
-    @Nonnull private final Logger log = LoggerFactory.getLogger(TransientIdAttributeDefinition.class);
-
-    /** The actual implementation of the transient generation process. */
-    @Nonnull private TransientIdGenerationStrategy idGenerator;
- 
-    /** {@inheritDoc} */
-    @Override protected void doInitialize() throws ComponentInitializationException {
-        super.doInitialize();
-        if (null == idGenerator) {
-            throw new ComponentInitializationException("Id generator must be non null");
-        }
-        
-        DeprecationSupport.warn(ObjectType.CLASS, getClass().getName(), null, "via NameID Generation configuration");
-    }
-
-    /** Set the id generator being used.  
-     * @param generator the (crypto or transient) generator to use
-     */
-    @Nonnull public void setTransientIdGenerationStrategy(@Nonnull final TransientIdGenerationStrategy generator) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        idGenerator = Constraint.isNotNull(generator, "Id generator must be non null");
-    }
-
-    /** return the id generator being used.  This is primarily used in testing.
-     * @return the generator strategy;
-     */
-    @Nonnull public TransientIdGenerationStrategy getTransientIdGenerationStrategy() {
-        return idGenerator;
-    }
-
-    /** {@inheritDoc} */
-    @Override @Nonnull protected IdPAttribute doAttributeDefinitionResolve(
-            @Nonnull final AttributeResolutionContext resolutionContext,
-            @Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
-
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-
-        final String attributeRecipientID = getAttributeRecipientID(resolutionContext);
-
-        final String principalName = getPrincipal(resolutionContext);
-
-        try {
-            final String transientId = idGenerator.generate(attributeRecipientID, principalName);
-            log.debug("{} creating new transient ID '{}'", new Object[] {getLogPrefix(), transientId,});
-
-            final IdPAttribute result = new IdPAttribute(getId());
-            result.setValues(Collections.singletonList(new StringAttributeValue(transientId)));
-            return result;
-        } catch (final SAMLException e) {
-            throw new ResolutionException(e);
-        }
-    }
-
-    /**
-     * Police and get the AttributeRecipientID.
-     * 
-     * @param resolutionContext where to look
-     * @return the AttributeRecipientID
-     * @throws ResolutionException if it was non null
-     */
-    @Nonnull @NotEmpty private String getAttributeRecipientID(
-            @Nonnull final AttributeResolutionContext resolutionContext) throws ResolutionException {
-        final String attributeRecipientID = resolutionContext.getAttributeRecipientID();
-        if (Strings.isNullOrEmpty(attributeRecipientID)) {
-            throw new ResolutionException(getLogPrefix() + " provided attribute recipient ID was empty");
-        }
-        return attributeRecipientID;
-    }
-
-    /**
-     * Police and get the Principal.
-     * 
-     * @param context where to look
-     * @return the Principal
-     * @throws ResolutionException if it was non null
-     */
-    @Nonnull @NotEmpty private String getPrincipal(@Nonnull final AttributeResolutionContext context)
-            throws ResolutionException {
-        final String principalName = context.getPrincipal();
-        if (Strings.isNullOrEmpty(principalName)) {
-            throw new ResolutionException(getLogPrefix() + " provided prinicipal name was empty");
-        }
-
-        return principalName;
-    }
-
-}
\ No newline at end of file
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/resolver/impl/CryptoTransientIdAttributeDefinitionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/resolver/impl/CryptoTransientIdAttributeDefinitionTest.java
deleted file mode 100644
index 063830d..0000000
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/resolver/impl/CryptoTransientIdAttributeDefinitionTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.attribute.resolver.impl;
-
-import java.io.IOException;
-import java.util.List;
-
-import net.shibboleth.ext.spring.resource.ResourceHelper;
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.StringAttributeValue;
-import net.shibboleth.idp.attribute.resolver.ResolutionException;
-import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
-import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
-import net.shibboleth.idp.saml.impl.TestSources;
-import net.shibboleth.idp.saml.nameid.impl.CryptoTransientIdGenerationStrategy;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.security.BasicKeystoreKeyStrategy;
-import net.shibboleth.utilities.java.support.security.DataSealer;
-import net.shibboleth.utilities.java.support.security.DataSealerException;
-
-import org.opensaml.core.OpenSAMLInitBaseTestCase;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.Resource;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-/**
- * Tests for CryptoTransientIdAttributeDefinition, which is a
- * 
- * @link {@link TransientIdAttributeDefinition} with an injected {@link CryptoTransientIdGenerationStrategy}
- */
- at SuppressWarnings("deprecation")
-public class CryptoTransientIdAttributeDefinitionTest extends OpenSAMLInitBaseTestCase {
-
-    private static final String ID = "CryptoTransientIdAttributeDefn";
-
-    private static final long TIMEOUT = 500;
-
-    private CryptoTransientIdGenerationStrategy strategy;
-
-    private DataSealer dataSealer;
-
-    /**
-     * Set up the data sealer. We take advantage of the fact that Spring a {@link ClassPathResource} wraps a files.
-     * 
-     * @throws IOException
-     * @throws DataSealerException
-     * @throws ComponentInitializationException
-     */
-    @BeforeClass public void setupStrategyAndSealer() throws IOException, DataSealerException,
-            ComponentInitializationException {
-
-        final Resource keyStore =
-                new ClassPathResource("/net/shibboleth/idp/saml/impl/attribute/resolver/SealerKeyStore.jks");
-        Assert.assertTrue(keyStore.exists());
-        
-        final Resource version =
-                new ClassPathResource("/net/shibboleth/idp/saml/impl/attribute/resolver/SealerKeyStore.kver");
-        Assert.assertTrue(version.exists());
-
-        final BasicKeystoreKeyStrategy kstrategy = new BasicKeystoreKeyStrategy();
-        kstrategy.setKeyAlias("secret");
-        kstrategy.setKeyPassword("kpassword");
-        kstrategy.setKeystorePassword("password");
-        kstrategy.setKeystoreResource(ResourceHelper.of(keyStore));
-        kstrategy.setKeyVersionResource(ResourceHelper.of(version));
-        kstrategy.initialize();
-        
-        dataSealer = new DataSealer();
-        dataSealer.setKeyStrategy(kstrategy);
-        dataSealer.initialize();
-
-        strategy = new CryptoTransientIdGenerationStrategy();
-        strategy.setDataSealer(dataSealer);
-        strategy.setId("strategy");
-        strategy.setIdLifetime(TIMEOUT);
-        strategy.initialize();
-
-    }
-
-    @Test public void badVals() throws ComponentInitializationException {
-        final TransientIdAttributeDefinition defn = TransientIdAttributeDefinitionTest.newTransientIdAttributeDefinition(strategy);
-        defn.setId(ID);
-        defn.initialize();
-
-        final AttributeResolutionContext context = new AttributeResolutionContext();
-        context.getSubcontext(AttributeResolverWorkContext.class, true);
-        try {
-            defn.resolve(context);
-            Assert.fail("No SP");
-        } catch (final ResolutionException e) {
-            // OK
-        }
-
-        try {
-            defn.resolve(TestSources.createResolutionContext(TestSources.PRINCIPAL_ID, TestSources.IDP_ENTITY_ID, null));
-            Assert.fail("No SP");
-        } catch (final ResolutionException e) {
-            // OK
-        }
-        try {
-            defn.resolve(TestSources.createResolutionContext(null, TestSources.IDP_ENTITY_ID, TestSources.SP_ENTITY_ID));
-            Assert.fail("No Principal");
-        } catch (final ResolutionException e) {
-            // OK
-        }
-    }
-
-    @Test public void encode() throws ComponentInitializationException, ResolutionException, DataSealerException,
-            InterruptedException {
-        final TransientIdAttributeDefinition defn = TransientIdAttributeDefinitionTest.newTransientIdAttributeDefinition(strategy);
-        defn.setId(ID);
-        defn.initialize();
-
-        final AttributeResolutionContext context =
-                TestSources.createResolutionContext(TestSources.PRINCIPAL_ID, TestSources.IDP_ENTITY_ID,
-                        TestSources.SP_ENTITY_ID);
-
-        final IdPAttribute result = defn.resolve(context);
-
-        final List<IdPAttributeValue<?>> values = result.getValues();
-        Assert.assertEquals(values.size(), 1);
-        final String code = ((StringAttributeValue) values.get(0)).getValue();
-
-        final String decode = dataSealer.unwrap(code);
-
-        Assert.assertEquals(decode, TestSources.SP_ENTITY_ID + "!" + TestSources.PRINCIPAL_ID);
-
-        Thread.sleep(2*TIMEOUT);
-        try {
-            dataSealer.unwrap(code);
-            Assert.fail("Timeout not set correctly");
-        } catch (final Exception e) {
-            // OK
-        }
-    }
-}
\ No newline at end of file
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinitionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinitionTest.java
deleted file mode 100644
index a1bde39..0000000
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinitionTest.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.attribute.resolver.impl;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-
-import javax.annotation.Nonnull;
-
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.resolver.ResolutionException;
-import net.shibboleth.idp.saml.impl.TestSources;
-import net.shibboleth.idp.saml.nameid.impl.StoredTransientIdGenerationStrategy;
-import net.shibboleth.idp.saml.nameid.impl.TransientIdGenerationStrategy;
-import net.shibboleth.idp.saml.nameid.impl.TransientIdParameters;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-
-import org.opensaml.core.OpenSAMLInitBaseTestCase;
-import org.opensaml.storage.StorageRecord;
-import org.opensaml.storage.impl.MemoryStorageService;
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-/** test for {@link net.shibboleth.idp.saml.attribute.resolver.impl.TransientIdAttributeDefinition}. */
- at SuppressWarnings("deprecation")
-public class TransientIdAttributeDefinitionTest extends OpenSAMLInitBaseTestCase {
-
-    /** The name. */
-    private static final String TEST_ATTRIBUTE_NAME = "simple";
-
-    private static final long TEST_LIFETIME = 10;
-
-    private static final int TEST_ID_SIZE = 32;
-
-    private MemoryStorageService store;
-
-    @BeforeMethod void setUp() throws ComponentInitializationException {
-        store = new MemoryStorageService();
-        store.setId("test");
-        store.initialize();
-    }
-    
-    @Test public void single() throws ComponentInitializationException, ResolutionException, IOException {
-        final StoredTransientIdGenerationStrategy strategy = new StoredTransientIdGenerationStrategy();
-        strategy.setId("strategy");
-        strategy.setIdStore(store);        
-        strategy.initialize();
-        
-        final TransientIdAttributeDefinition defn = newTransientIdAttributeDefinition(strategy);
-        defn.setId(TEST_ATTRIBUTE_NAME);
-
-        defn.setDataConnectorDependencies(Collections.singleton(TestSources.makeDataConnectorDependency("foo", "bar")));
-
-        defn.initialize();
-
-        final IdPAttribute result =
-                defn.resolve(TestSources.createResolutionContext(TestSources.PRINCIPAL_ID,
-                        TestSources.IDP_ENTITY_ID, TestSources.SP_ENTITY_ID));
-
-        final List<IdPAttributeValue<?>> vals = result.getValues();
-        Assert.assertEquals(vals.size(), 1);
-
-        final String val = (String) vals.get(0).getValue();
-
-        final StorageRecord record = store.read(TransientIdParameters.CONTEXT, val);
-        
-        Assert.assertNotNull(record);
-        Assert.assertTrue(val.length() >= strategy.getIdSize());
- 
-        final TransientIdParameters parms = new TransientIdParameters(record.getValue());
-        
-        Assert.assertNotNull(parms);
-        Assert.assertEquals(parms.getAttributeRecipient(), TestSources.SP_ENTITY_ID);
-        Assert.assertEquals(parms.getPrincipal(), TestSources.PRINCIPAL_ID);
-
-        defn.destroy();
-        store.destroy();
-    }
-
-    private void constructAndFail(final String sp, final String idp, final String principal, final String whyItFailed)
-            throws ComponentInitializationException {
-        
-        final StoredTransientIdGenerationStrategy strategy = new StoredTransientIdGenerationStrategy();
-        strategy.setId("strategy");
-        strategy.setIdStore(store);
-        strategy.initialize();
-        
-        final TransientIdAttributeDefinition defn = newTransientIdAttributeDefinition(strategy);
-        defn.setId(TEST_ATTRIBUTE_NAME);
-        defn.setDataConnectorDependencies(Collections.singleton(TestSources.makeDataConnectorDependency("foo", "bar")));
-        defn.initialize();
-        try {
-            defn.resolve(TestSources.createResolutionContext(principal, idp, sp));
-            Assert.fail(whyItFailed);
-        } catch (final ResolutionException e) {
-            // OK
-        }
-
-        defn.destroy();
-        store.destroy();
-    }
-
-    @Test public void fails() throws ComponentInitializationException {
-
-        constructAndFail(TestSources.SP_ENTITY_ID, TestSources.IDP_ENTITY_ID, null, "Null principal");
-        constructAndFail(null, TestSources.IDP_ENTITY_ID, TestSources.PRINCIPAL_ID, "Null SP");
-    }
-
-    @Test public void testGetters() throws ComponentInitializationException {
-        final StoredTransientIdGenerationStrategy strategy = new StoredTransientIdGenerationStrategy();
-        strategy.setId("strategy");
-        strategy.setIdLifetime(TEST_LIFETIME);
-        strategy.setIdSize(TEST_ID_SIZE);
-        strategy.setIdStore(store);
-        strategy.initialize();
-        final TransientIdAttributeDefinition defn = newTransientIdAttributeDefinition(strategy);
-        defn.setId(TEST_ATTRIBUTE_NAME);
-        defn.setDataConnectorDependencies(Collections.singleton(TestSources.makeDataConnectorDependency("foo", "bar")));
-
-        defn.initialize();
-
-        Assert.assertEquals(defn.getId(), TEST_ATTRIBUTE_NAME);
-
-        defn.destroy();
-        store.destroy();
-    }
-
-    @Test public void rerun() throws ComponentInitializationException, ResolutionException,
-            InterruptedException {
-        final StoredTransientIdGenerationStrategy strategy = new StoredTransientIdGenerationStrategy();
-        strategy.setId("strategy");
-        strategy.setIdLifetime(TEST_LIFETIME);
-        strategy.setIdSize(TEST_ID_SIZE);
-        strategy.setIdStore(store);
-        strategy.initialize();
-        final TransientIdAttributeDefinition defn = newTransientIdAttributeDefinition(strategy);
-
-        defn.setId(TEST_ATTRIBUTE_NAME);
-        defn.setDataConnectorDependencies(Collections.singleton(TestSources.makeDataConnectorDependency("foo", "bar")));
-        defn.initialize();
-
-        IdPAttribute result = defn.resolve(TestSources.createResolutionContext(TestSources.PRINCIPAL_ID,
-                TestSources.IDP_ENTITY_ID, TestSources.SP_ENTITY_ID));
-
-        List<IdPAttributeValue<?>> vals = result.getValues();
-        final String firstTime = (String) vals.get(0).getValue();
-
-        result = defn.resolve(TestSources.createResolutionContext(TestSources.PRINCIPAL_ID,
-                TestSources.IDP_ENTITY_ID, TestSources.SP_ENTITY_ID));
-        Assert.assertEquals(firstTime, vals.iterator().next().getValue());
-        Assert.assertTrue(firstTime.length() >= strategy.getIdSize());
-
-        Thread.sleep(TEST_LIFETIME * 2);
-
-        result = defn.resolve(TestSources.createResolutionContext(TestSources.PRINCIPAL_ID,
-                TestSources.IDP_ENTITY_ID, TestSources.SP_ENTITY_ID));
-        vals = result.getValues();
-        Assert.assertNotEquals(firstTime, vals.get(0).getValue());
-
-        defn.destroy();
-        store.destroy();
-    }
-    static public TransientIdAttributeDefinition newTransientIdAttributeDefinition(@Nonnull final TransientIdGenerationStrategy generator) {
-        final TransientIdAttributeDefinition defn = new TransientIdAttributeDefinition();
-        defn.setTransientIdGenerationStrategy(generator);
-        return defn;
-    }
-}
\ No newline at end of file
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientNameIDDecoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientNameIDDecoderTest.java
index 783af80..75322ce 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientNameIDDecoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientNameIDDecoderTest.java
@@ -19,20 +19,14 @@ package net.shibboleth.idp.saml.nameid.impl;
 
 import java.io.IOException;
 import java.util.Collections;
-import java.util.List;
 
 import javax.security.auth.Subject;
 
 import net.shibboleth.ext.spring.resource.ResourceHelper;
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.StringAttributeValue;
-import net.shibboleth.idp.attribute.resolver.ResolutionException;
-import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.idp.authn.SubjectCanonicalizationException;
 import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
-import net.shibboleth.idp.saml.attribute.resolver.impl.TransientIdAttributeDefinition;
-import net.shibboleth.idp.saml.attribute.resolver.impl.TransientIdAttributeDefinitionTest;
+import net.shibboleth.idp.authn.context.SubjectContext;
+import net.shibboleth.idp.profile.RequestContextBuilder;
 import net.shibboleth.idp.saml.authn.principal.NameIDPrincipal;
 import net.shibboleth.idp.saml.impl.TestSources;
 import net.shibboleth.idp.saml.nameid.NameDecoderException;
@@ -43,10 +37,8 @@ import net.shibboleth.utilities.java.support.security.DataSealer;
 import net.shibboleth.utilities.java.support.security.DataSealerException;
 
 import org.opensaml.core.OpenSAMLInitBaseTestCase;
-import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
 import org.opensaml.profile.action.ActionTestingSupport;
 import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.saml.common.SAMLObjectBuilder;
 import org.opensaml.saml.saml2.core.NameID;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
@@ -57,7 +49,6 @@ import org.testng.annotations.Test;
 /**
  * test for {@link CryptoTransientNameIDDecoder}.
  */
- at SuppressWarnings("deprecation")
 public class CryptoTransientNameIDDecoderTest extends OpenSAMLInitBaseTestCase {
 
     private final static long TIMEOUT = 50000;
@@ -156,8 +147,7 @@ public class CryptoTransientNameIDDecoderTest extends OpenSAMLInitBaseTestCase {
         Assert.assertNull(decoder.decode(ct, "my" + RECIPIENT));
     }
 
-    @Test public void decode() throws ComponentInitializationException, ResolutionException, DataSealerException,
-            InterruptedException {
+    @Test public void decode() throws Exception {
         
         final CryptoTransientIdGenerationStrategy strategy = new CryptoTransientIdGenerationStrategy();
         strategy.setDataSealer(dataSealer);
@@ -165,38 +155,27 @@ public class CryptoTransientNameIDDecoderTest extends OpenSAMLInitBaseTestCase {
         strategy.setIdLifetime(TIMEOUT);
         strategy.initialize();
 
-        final TransientIdAttributeDefinition defn = TransientIdAttributeDefinitionTest.newTransientIdAttributeDefinition(strategy);
-        defn.setId("defn");
-        defn.initialize();
-
-        final AttributeResolutionContext context =
-                TestSources.createResolutionContext(TestSources.PRINCIPAL_ID, TestSources.IDP_ENTITY_ID,
-                        TestSources.SP_ENTITY_ID);
-
-        final IdPAttribute result = defn.resolve(context);
-
-        final List<IdPAttributeValue<?>> values = result.getValues();
-        Assert.assertEquals(values.size(), 1);
-        final String code = ((StringAttributeValue) values.get(0)).getValue();
-
-        final NameID nameID =
-                ((SAMLObjectBuilder<NameID>) XMLObjectProviderRegistrySupport.getBuilderFactory().<NameID>getBuilderOrThrow(
-                        NameID.DEFAULT_ELEMENT_NAME)).buildObject();
-        nameID.setFormat("https://example.org/");
-        nameID.setNameQualifier(TestSources.IDP_ENTITY_ID);
-        nameID.setSPNameQualifier(TestSources.SP_ENTITY_ID);
-        nameID.setValue(code);
+        final TransientSAML2NameIDGenerator generator = new TransientSAML2NameIDGenerator();
+        generator.setId("id");
+        generator.setTransientIdGenerator(strategy);
+        generator.initialize();    
+    
+        ProfileRequestContext prc =
+                new RequestContextBuilder().setInboundMessageIssuer(TestSources.SP_ENTITY_ID).buildProfileRequestContext();
+        prc.getSubcontext(SubjectContext.class, true).setPrincipalName(TestSources.PRINCIPAL_ID);
+        
+        final NameID nameID = generator.generate(prc, generator.getFormat());
 
         final NameIDCanonicalizationFlowDescriptor desc = new NameIDCanonicalizationFlowDescriptor();
         desc.setId("C14NDesc");
-        desc.setFormats(Collections.singleton("https://example.org/"));
+        desc.setFormats(Collections.singleton(generator.getFormat()));
         desc.initialize();
         
         final NameIDCanonicalization canon = new NameIDCanonicalization();
         canon.setDecoder(decoder);
         canon.initialize();
 
-        final ProfileRequestContext prc = new ProfileRequestContext<>();
+        prc = new ProfileRequestContext<>();
         final SubjectCanonicalizationContext scc = prc.getSubcontext(SubjectCanonicalizationContext.class, true);
         final Subject subject = new Subject();
 
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientNameIdentifierDecoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientNameIdentifierDecoderTest.java
index 001cbfe..9de339c 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientNameIdentifierDecoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientNameIdentifierDecoderTest.java
@@ -19,18 +19,13 @@ package net.shibboleth.idp.saml.nameid.impl;
 
 import java.io.IOException;
 import java.util.Collections;
-import java.util.List;
 
 import javax.security.auth.Subject;
 
 import net.shibboleth.ext.spring.resource.ResourceHelper;
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.StringAttributeValue;
-import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
-import net.shibboleth.idp.saml.attribute.resolver.impl.TransientIdAttributeDefinition;
-import net.shibboleth.idp.saml.attribute.resolver.impl.TransientIdAttributeDefinitionTest;
+import net.shibboleth.idp.authn.context.SubjectContext;
+import net.shibboleth.idp.profile.RequestContextBuilder;
 import net.shibboleth.idp.saml.authn.principal.NameIdentifierPrincipal;
 import net.shibboleth.idp.saml.impl.TestSources;
 import net.shibboleth.idp.saml.nameid.NameIDCanonicalizationFlowDescriptor;
@@ -40,10 +35,8 @@ import net.shibboleth.utilities.java.support.security.DataSealer;
 import net.shibboleth.utilities.java.support.security.DataSealerException;
 
 import org.opensaml.core.OpenSAMLInitBaseTestCase;
-import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
 import org.opensaml.profile.action.ActionTestingSupport;
 import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.saml.common.SAMLObjectBuilder;
 import org.opensaml.saml.saml1.core.NameIdentifier;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
@@ -54,7 +47,6 @@ import org.testng.annotations.Test;
 /**
  * test for {@link CryptoTransientNameIdentifierDecoder}.
  */
- at SuppressWarnings("deprecation")
 public class CryptoTransientNameIdentifierDecoderTest extends OpenSAMLInitBaseTestCase {
 
     private final static long TIMEOUT = 5000;
@@ -105,37 +97,27 @@ public class CryptoTransientNameIdentifierDecoderTest extends OpenSAMLInitBaseTe
         strategy.setIdLifetime(TIMEOUT);
         strategy.initialize();
 
-        final TransientIdAttributeDefinition defn = TransientIdAttributeDefinitionTest.newTransientIdAttributeDefinition(strategy);
-        defn.setId("defn");
-        defn.initialize();
-
-        final AttributeResolutionContext context =
-                TestSources.createResolutionContext(TestSources.PRINCIPAL_ID, TestSources.IDP_ENTITY_ID,
-                        TestSources.SP_ENTITY_ID);
-
-        final IdPAttribute result = defn.resolve(context);
-
-        final List<IdPAttributeValue<?>> values = result.getValues();
-        Assert.assertEquals(values.size(), 1);
-        final String code = ((StringAttributeValue) values.get(0)).getValue();
-
-        final NameIdentifier nameID =
-                ((SAMLObjectBuilder<NameIdentifier>) XMLObjectProviderRegistrySupport.getBuilderFactory().<NameIdentifier>getBuilderOrThrow(
-                        NameIdentifier.DEFAULT_ELEMENT_NAME)).buildObject();
-        nameID.setFormat("https://example.org/");
-        nameID.setNameQualifier(TestSources.IDP_ENTITY_ID);
-        nameID.setValue(code);
+        final TransientSAML1NameIdentifierGenerator generator = new TransientSAML1NameIdentifierGenerator();
+        generator.setId("id");
+        generator.setTransientIdGenerator(strategy);
+        generator.initialize();
+    
+        ProfileRequestContext prc =
+                new RequestContextBuilder().setInboundMessageIssuer(TestSources.SP_ENTITY_ID).buildProfileRequestContext();
+        prc.getSubcontext(SubjectContext.class, true).setPrincipalName(TestSources.PRINCIPAL_ID);
+        
+        final NameIdentifier nameID = generator.generate(prc, generator.getFormat());
 
         final NameIDCanonicalizationFlowDescriptor desc = new NameIDCanonicalizationFlowDescriptor();
         desc.setId("C14NDesc");
-        desc.setFormats(Collections.singleton("https://example.org/"));
+        desc.setFormats(Collections.singleton(generator.getFormat()));
         desc.initialize();
         
         final NameIdentifierCanonicalization canon = new NameIdentifierCanonicalization();
         canon.setDecoder(decoder);
         canon.initialize();
 
-        final ProfileRequestContext prc = new ProfileRequestContext<>();
+        prc = new ProfileRequestContext<>();
         final SubjectCanonicalizationContext scc = prc.getSubcontext(SubjectCanonicalizationContext.class, true);
         final Subject subject = new Subject();
 
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/TransientDecoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/TransientDecoderTest.java
index 4874f0d..fdcddbd 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/TransientDecoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/TransientDecoderTest.java
@@ -17,28 +17,22 @@
 
 package net.shibboleth.idp.saml.nameid.impl;
 
-import java.util.Collection;
 import java.util.Collections;
 
 import javax.security.auth.Subject;
 
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
 import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
-import net.shibboleth.idp.saml.attribute.resolver.impl.TransientIdAttributeDefinition;
-import net.shibboleth.idp.saml.attribute.resolver.impl.TransientIdAttributeDefinitionTest;
+import net.shibboleth.idp.authn.context.SubjectContext;
+import net.shibboleth.idp.profile.RequestContextBuilder;
 import net.shibboleth.idp.saml.authn.principal.NameIDPrincipal;
 import net.shibboleth.idp.saml.impl.TestSources;
 import net.shibboleth.idp.saml.nameid.NameDecoderException;
 import net.shibboleth.idp.saml.nameid.NameIDCanonicalizationFlowDescriptor;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 import org.opensaml.core.OpenSAMLInitBaseTestCase;
-import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
 import org.opensaml.profile.action.ActionTestingSupport;
 import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.saml.common.SAMLObjectBuilder;
 import org.opensaml.saml.saml2.core.NameID;
 import org.opensaml.storage.impl.MemoryStorageService;
 import org.testng.Assert;
@@ -46,7 +40,6 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 /** {@link BaseTransientDecoder} unit test. */
- at SuppressWarnings("deprecation")
 public class TransientDecoderTest extends OpenSAMLInitBaseTestCase {
 
     private static final String RECIPIENT="TheRecipient";
@@ -131,36 +124,6 @@ public class TransientDecoderTest extends OpenSAMLInitBaseTestCase {
 
         decoder.decode(id, PRINCIPAL);
     }
-
-    private NameID encode(final IdPAttribute attribute) {
-
-        final Collection<IdPAttributeValue<?>> attributeValues = attribute.getValues();
-        if (attributeValues == null || attributeValues.isEmpty()) {
-            return null;
-        }
-        final SAMLObjectBuilder<NameID> identifierBuilder = (SAMLObjectBuilder<NameID>)
-                XMLObjectProviderRegistrySupport.getBuilderFactory().getBuilder(NameID.DEFAULT_ELEMENT_NAME);
-        final NameID nameId = identifierBuilder.buildObject();
-        nameId.setFormat("https://example.org/");
-        for (final IdPAttributeValue attrValue : attributeValues) {
-            if (attrValue == null || attrValue.getValue() == null) {
-                continue;
-            }
-            final Object value = attrValue.getValue();
-            if (value instanceof String) {
-                // Check for empty or all-whitespace, but don't trim.
-                if (StringSupport.trimOrNull((String) value) == null) {
-                    continue;
-                }
-                nameId.setValue((String) value);
-                return nameId;
-            } else {
-                continue;
-            }
-        }
-        return null;
-    }
-
     
     @Test public void decode() throws Exception {
         
@@ -169,20 +132,19 @@ public class TransientDecoderTest extends OpenSAMLInitBaseTestCase {
         strategy.setIdStore(store);        
         strategy.initialize();
         
-        final TransientIdAttributeDefinition defn = TransientIdAttributeDefinitionTest.newTransientIdAttributeDefinition(strategy);
-        defn.setId("id");
-        defn.setDataConnectorDependencies(Collections.singleton(TestSources.makeDataConnectorDependency("foo", "bar")));
-        defn.initialize();
+        final TransientSAML2NameIDGenerator generator = new TransientSAML2NameIDGenerator();
+        generator.setId("id");
+        generator.setTransientIdGenerator(strategy);
+        generator.initialize();    
     
-        final IdPAttribute result =
-                defn.resolve(TestSources.createResolutionContext(TestSources.PRINCIPAL_ID,
-                        TestSources.IDP_ENTITY_ID, TestSources.SP_ENTITY_ID));
-    
-    
-        final NameID nameid = encode(result);
+        ProfileRequestContext prc =
+                new RequestContextBuilder().setInboundMessageIssuer(TestSources.SP_ENTITY_ID).buildProfileRequestContext();
+        prc.getSubcontext(SubjectContext.class, true).setPrincipalName(TestSources.PRINCIPAL_ID);
+        
+        final NameID nameid = generator.generate(prc, generator.getFormat());
 
         final NameIDCanonicalizationFlowDescriptor descriptor = new NameIDCanonicalizationFlowDescriptor();
-        descriptor.setFormats(Collections.singleton("https://example.org/"));
+        descriptor.setFormats(Collections.singleton(generator.getFormat()));
         descriptor.setId("NameIdFlowDescriptor");
         descriptor.initialize();
         final NameIDCanonicalization canon = new NameIDCanonicalization();
@@ -194,7 +156,7 @@ public class TransientDecoderTest extends OpenSAMLInitBaseTestCase {
         canon.setDecoder(decoder);
         canon.initialize();
         
-        final ProfileRequestContext prc = new ProfileRequestContext<>();
+        prc = new ProfileRequestContext<>();
         final SubjectCanonicalizationContext scc = prc.getSubcontext(SubjectCanonicalizationContext.class, true);
         final Subject subject = new Subject();
         subject.getPrincipals().add(new NameIDPrincipal(nameid));
diff --git a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
index ae35043..335c8bc 100644
--- a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
+++ b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
@@ -3,13 +3,13 @@
 	xmlns:resolver="urn:mace:shibboleth:2.0:resolver"
 	xmlns:sec="urn:mace:shibboleth:2.0:security"
 	targetNamespace="urn:mace:shibboleth:2.0:resolver"
-	elementFormDefault="qualified" version="3.0">
+	elementFormDefault="qualified" version="4.0">
 
     <import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
     <import namespace="urn:mace:shibboleth:2.0:security" schemaLocation="http://shibboleth.net/schema/idp/shibboleth-security.xsd"/>
 
     <annotation>
-        <documentation>Shibboleth 2.0 Attribute Resolver configuration schema
+        <documentation>Shibboleth V4 Attribute Resolver configuration schema
         </documentation>
     </annotation>
 
@@ -322,31 +322,6 @@
         </complexContent>
     </complexType>
 
-    <complexType name="CryptoTransientId">
-        <annotation>
-            <documentation>An attribute definition used to construct stateless transient subject identifiers.</documentation>
-        </annotation>
-        <complexContent>
-            <extension base="resolver:BaseAttributeDefinitionType">
-                <choice maxOccurs="unbounded" minOccurs="0">
-                    <element name="DisplayName" type="resolver:LocalizedStringType"/>
-                    <element name="DisplayDescription" type="resolver:LocalizedStringType"/>
-                    <element ref="resolver:AttributeEncoder"/>
-                </choice>
-                <attribute name="dataSealerRef" type="string" use="required">
-                    <annotation>
-                        <documentation>Object used to protect and encrypt identifiers</documentation>
-                    </annotation>
-                </attribute>
-                <attribute name="lifetime" type="string">
-                    <annotation>
-                        <documentation>Lifetime of issued identifiers</documentation>
-                    </annotation>
-                </attribute>
-            </extension>
-        </complexContent>
-    </complexType>
-
     <complexType name="Mapped">
         <annotation>
             <documentation>
@@ -679,31 +654,6 @@
         </complexContent>
     </complexType>
 
-    <complexType name="TransientId">
-        <annotation>
-            <documentation>A attribute definition used to construct transient subject identifiers.</documentation>
-        </annotation>
-        <complexContent>
-            <extension base="resolver:BaseAttributeDefinitionType">
-                <choice maxOccurs="unbounded" minOccurs="0">
-                    <element name="DisplayName" type="resolver:LocalizedStringType"/>
-                    <element name="DisplayDescription" type="resolver:LocalizedStringType"/>
-                    <element ref="resolver:AttributeEncoder"/>
-                </choice>
-                <attribute name="storageServiceRef" type="string" default="shibboleth.StorageService">
-                    <annotation>
-                        <documentation>Storage service used to store created identifiers</documentation>
-                    </annotation>
-                </attribute>
-                <attribute name="lifetime" type="string">
-                    <annotation>
-                        <documentation>Lifetime of issued identifiers</documentation>
-                    </annotation>
-                </attribute>
-            </extension>
-        </complexContent>
-    </complexType>
-
     <complexType name="ComputedId">
         <annotation>
             <documentation>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list