[java-opensaml] branch main updated: Moving new classes up into IdP for profile access.

Scott Cantor cantor.2 at osu.edu
Wed Dec 13 21:25:23 UTC 2023


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

scantor pushed a commit to branch main
in repository java-opensaml.

View the commit online:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=commit;h=a2964156bfb3584f5d74a8eb085babe229d28c4f

The following commit(s) were added to refs/heads/main by this push:
     new a2964156b Moving new classes up into IdP for profile access.
a2964156b is described below

commit a2964156bfb3584f5d74a8eb085babe229d28c4f
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Dec 13 16:25:20 2023 -0500

    Moving new classes up into IdP for profile access.
---
 opensaml-storage-api/pom.xml                       |   5 -
 .../storage/StorageAwareCookieManager.java         | 166 ---------------------
 .../impl/StorageAwareCookieManagerTest.java        | 147 ------------------
 3 files changed, 318 deletions(-)

diff --git a/opensaml-storage-api/pom.xml b/opensaml-storage-api/pom.xml
index 5789804ea..527f962ce 100644
--- a/opensaml-storage-api/pom.xml
+++ b/opensaml-storage-api/pom.xml
@@ -27,11 +27,6 @@
             <version>${project.version}</version>
         </dependency>
 
-        <dependency>
-            <groupId>${shib-shared.groupId}</groupId>
-            <artifactId>shib-networking</artifactId>
-        </dependency>
-
         <!-- Provided Dependencies -->
 
         <!-- Runtime Dependencies -->
diff --git a/opensaml-storage-api/src/main/java/org/opensaml/storage/StorageAwareCookieManager.java b/opensaml-storage-api/src/main/java/org/opensaml/storage/StorageAwareCookieManager.java
deleted file mode 100644
index 574b226e2..000000000
--- a/opensaml-storage-api/src/main/java/org/opensaml/storage/StorageAwareCookieManager.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Licensed 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 org.opensaml.storage;
-
-import java.io.IOException;
-import java.time.Instant;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.slf4j.Logger;
-
-import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.shared.component.ComponentInitializationException;
-import net.shibboleth.shared.net.CookieManager;
-import net.shibboleth.shared.primitive.LoggerFactory;
-
-/**
- * An extended {@link CookieManager} that allows use of a {@link StorageService}.
- * 
- * <p>Reads are backed up by a read into the storage service, while writes are passed
- * through to it.</p>
- * 
- * <p>This is NOT suitable for use cases in which consistency of data is critical, as
- * there are few if any storage options (other than the client itself) that will provide
- * sufficient reliability and locking to avoid problems.</p>
- * 
- * @since 5.1.0
- */
-public class StorageAwareCookieManager extends CookieManager {
-
-    /** Class logger. */
-    @Nonnull private Logger log = LoggerFactory.getLogger(org.opensaml.storage.StorageAwareCookieManager.class);
-    
-    /** Optional storage service to backstop the cookie. */
-    @Nullable private StorageService storageService;
-    
-    /** Storage context based on fixed value and cookie attributes. */
-    @NonnullAfterInit private String storageContext;
-    
-    /**
-     * Sets the {@link StorageService} to read/write.
-     * 
-     * @param ss storage service
-     */
-    public void setStorageService(@Nullable final StorageService ss) {
-        checkSetterPreconditions();
-        
-        storageService = ss;
-    }
-    
-    /**
-     * Get the storage context used to hold the cookies.
-     * 
-     * @return storage context
-     */
-    @NonnullAfterInit public String getStorageContext() {
-        return storageContext;
-    }
-    
-    /** {@inheritDoc} */
-    @Override
-    protected void doInitialize() throws ComponentInitializationException {
-        super.doInitialize();
-        
-        if (getMaxAge() == -1 && storageService != null) {
-            log.warn("Unsetting StorageService due to per-session max-age setting");
-            storageService = null;
-        }
-
-        final StringBuilder contextBuilder = new StringBuilder(getClass().getName());
-        contextBuilder.append('!');
-        if (getCookieDomain() != null) {
-            contextBuilder.append(getCookieDomain());
-        }
-        contextBuilder.append('!');
-        if (getCookiePath() != null) {
-            contextBuilder.append(getCookiePath());
-        }
-        
-        storageContext = contextBuilder.toString();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void addCookie(@Nonnull final String name, @Nonnull final String value) {
-        super.addCookie(name, value);
-
-        final Long exp = Instant.now().plusSeconds(getMaxAge()).toEpochMilli();
-        
-        final StorageService ss = storageService;
-        if (ss != null) {
-            try {
-                if (ss.create(storageContext, name, value, exp)) {
-                    log.trace("Created new cookie record {}", name);
-                } else if (ss.update(storageContext, name, value, exp)) {
-                    log.trace("Updated cookie record {}", name);
-                }
-            } catch (final IOException e) {
-                log.warn("Error creating/updating cookie record in storage service", e);
-            }
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void unsetCookie(@Nonnull final String name) {
-        super.unsetCookie(name);
-        
-        if (storageService != null) {
-            try {
-                storageService.delete(storageContext, name);
-            } catch (final IOException e) {
-                log.warn("Error deleting cookie record from storage service", e);
-            }
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    @Nullable public String getCookieValue(@Nonnull final String name, @Nullable final String defValue) {
-        
-        final StorageService ss = storageService;
-        if (ss != null) {
-            try {
-                final String val = super.getCookieValue(name, null);
-                if (val != null) {
-                    return val;
-                }
-
-                final StorageRecord<String> record = ss.read(storageContext, name);
-                if (record != null) {
-                    log.debug("Backfilling/setting missing cookie {} based on stored record", name);
-                    final Long exp = record.getExpiration();
-                    if (exp != null) {
-                        // Uses protected hook to override max-age to backdate it.
-                        super.addCookie(name, record.getValue(), (int) (exp - Instant.now().toEpochMilli()) / 1000);
-                    } else {
-                        // Won't ever happen, per init checking.
-                        super.addCookie(name, record.getValue(), -1);
-                    }
-                    return record.getValue();
-                }
-            } catch (final IOException e) {
-                log.warn("Error reading cookie record from storage service", e);
-            }
-        } else {
-            return super.getCookieValue(name, defValue);
-        }
-        
-        return defValue;
-    }
-    
-}
\ No newline at end of file
diff --git a/opensaml-storage-impl/src/test/java/org/opensaml/storage/impl/StorageAwareCookieManagerTest.java b/opensaml-storage-impl/src/test/java/org/opensaml/storage/impl/StorageAwareCookieManagerTest.java
deleted file mode 100644
index acc1e172a..000000000
--- a/opensaml-storage-impl/src/test/java/org/opensaml/storage/impl/StorageAwareCookieManagerTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed 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 org.opensaml.storage.impl;
-
-import java.io.IOException;
-import java.time.Duration;
-import java.time.Instant;
-
-import javax.annotation.Nonnull;
-
-import org.opensaml.storage.StorageAwareCookieManager;
-import org.opensaml.storage.StorageRecord;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import jakarta.servlet.http.Cookie;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import net.shibboleth.shared.component.ComponentInitializationException;
-import net.shibboleth.shared.primitive.NonnullSupplier;
-
-/** {@link CookieManager} unit test. */
- at SuppressWarnings("javadoc")
-public class StorageAwareCookieManagerTest {
-    
-    private MockHttpServletRequest request;
-    private MockHttpServletResponse response;
-    
-    private MemoryStorageService storage;
-    
-    private StorageAwareCookieManager cm;
-    
-    @BeforeMethod
-    public void setUp() throws ComponentInitializationException {
-        request = new MockHttpServletRequest();
-        response = new MockHttpServletResponse();
-        
-        storage = new MemoryStorageService();
-        storage.setId("test");
-        storage.setCleanupInterval(Duration.ZERO);
-        storage.initialize();
-        
-        cm = new StorageAwareCookieManager();
-        cm.setHttpServletRequestSupplier(new NonnullSupplier<>() { @Nonnull public HttpServletRequest get() {return request;}});
-        cm.setHttpServletResponseSupplier(new NonnullSupplier<>() { @Nonnull public HttpServletResponse get() {return response;}});
-        cm.setCookiePath("/idp");
-        cm.setStorageService(storage);
-        cm.setMaxAge(600);
-        cm.initialize();
-    }
-    
-    @Test public void testInitFailure() {
-        final StorageAwareCookieManager cm = new StorageAwareCookieManager();
-        try {
-            cm.initialize();
-            Assert.fail();
-        } catch (final ComponentInitializationException e) {
-            
-        }
-    }
-    @Test public void testCookieWithPath() throws ComponentInitializationException, IOException {
-
-        cm.addCookie("foo", "bar");
-
-        final Cookie cookie = response.getCookie("foo");
-        assert(cookie != null);
-        Assert.assertEquals(cookie.getValue(), "bar");
-        Assert.assertEquals(cookie.getPath(), "/idp");
-        Assert.assertNull(cookie.getDomain());
-        Assert.assertTrue(cookie.getSecure());
-        Assert.assertEquals(cookie.getMaxAge(), 600);
-        
-        final StorageRecord<String> record = storage.read(cm.getStorageContext(), "foo");
-        assert record != null;
-        Assert.assertEquals(record.getVersion(), 1);
-        Assert.assertEquals(record.getValue(), "bar");
-    }
-
-    @Test public void testCookieNoPath() throws ComponentInitializationException, IOException {
-        request.setContextPath("/idp");
-        
-        cm.addCookie("foo", "bar");
-        
-        final Cookie cookie = response.getCookie("foo");
-        assert(cookie != null);
-        Assert.assertEquals(cookie.getValue(), "bar");
-        Assert.assertEquals(cookie.getPath(), "/idp");
-        Assert.assertNull(cookie.getDomain());
-        Assert.assertTrue(cookie.getSecure());
-        Assert.assertEquals(cookie.getMaxAge(), 600);
-        
-        final StorageRecord<String> record = storage.read(cm.getStorageContext(), "foo");
-        assert record != null;
-        Assert.assertEquals(record.getVersion(), 1);
-        Assert.assertEquals(record.getValue(), "bar");
-    }
-
-    @Test public void testCookieUnset() throws ComponentInitializationException, IOException {
-        request.setContextPath("/idp");
-        request.setCookies(new Cookie("foo", "bar"));
-
-        cm.unsetCookie("foo");
-        
-        final Cookie cookie = response.getCookie("foo");
-        assert(cookie != null);
-        Assert.assertNull(cookie.getValue());
-        Assert.assertEquals(cookie.getPath(), "/idp");
-        Assert.assertNull(cookie.getDomain());
-        Assert.assertTrue(cookie.getSecure());
-        Assert.assertEquals(cookie.getMaxAge(), 0);
-
-        final StorageRecord<String> record = storage.read(cm.getStorageContext(), "foo");
-        Assert.assertNull(record);
-    }
-
-    @Test public void testCookieRestore() throws ComponentInitializationException, IOException {
-        request.setContextPath("/idp");
-        
-        storage.create(cm.getStorageContext(), "foo", "bar", Instant.now().plusSeconds(600).toEpochMilli());
-        
-        Assert.assertEquals(cm.getCookieValue("foo", "baz"), "bar");
-        
-        final Cookie cookie = response.getCookie("foo");
-        assert(cookie != null);
-        Assert.assertEquals(cookie.getValue(), "bar");
-        Assert.assertEquals(cookie.getPath(), "/idp");
-        Assert.assertNull(cookie.getDomain());
-        Assert.assertTrue(cookie.getSecure());
-        Assert.assertTrue(cookie.getMaxAge() <= 600);
-    }
-    
-}
\ No newline at end of file

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


More information about the commits mailing list