[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