[JIRA] (IDP-2111) "trustAnchors parameter must be non-empty" failure in httpClient
Paul B. Henson (Jira)
jira at shibboleth.atlassian.net
Wed May 17 17:31:31 UTC 2023
Paul B. Henson ( https://shibboleth.atlassian.net/secure/ViewProfile.jspa?accountId=5b58f937ffd0a32d7917a0df ) *created* an issue
Identity Provider ( https://shibboleth.atlassian.net/browse/IDP?atlOrigin=eyJpIjoiMzNjMjNiNTE2NGMwNGMwYzhjYjg1MjA3MGIzOTQwNjYiLCJwIjoiaiJ9 ) / Bug ( https://shibboleth.atlassian.net/browse/IDP-2111?atlOrigin=eyJpIjoiMzNjMjNiNTE2NGMwNGMwYzhjYjg1MjA3MGIzOTQwNjYiLCJwIjoiaiJ9 ) IDP-2111 ( https://shibboleth.atlassian.net/browse/IDP-2111?atlOrigin=eyJpIjoiMzNjMjNiNTE2NGMwNGMwYzhjYjg1MjA3MGIzOTQwNjYiLCJwIjoiaiJ9 ) "trustAnchors parameter must be non-empty" failure in httpClient ( https://shibboleth.atlassian.net/browse/IDP-2111?atlOrigin=eyJpIjoiMzNjMjNiNTE2NGMwNGMwYzhjYjg1MjA3MGIzOTQwNjYiLCJwIjoiaiJ9 )
Issue Type: Bug Affects Versions: 4.3.0 Assignee: Brent Putman ( https://shibboleth.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A97de0981-adc3-4044-95ed-131622fad81e ) Components: Metadata Created: 17/May/23 1:31 PM Priority: Trivial Reporter: Paul B. Henson ( https://shibboleth.atlassian.net/secure/ViewProfile.jspa?accountId=5b58f937ffd0a32d7917a0df )
Every now and again, not very frequently and not reproducible, downloads of metadata fail with this error:
{{2023-05-12 12:56:56,518 - 2620:df:8000:4785:0:2:d68:3254/node01rgbckgke63px17gt9q8t468e0781623 - ERROR [org.op }}
{{ensaml.saml.metadata.resolver.impl.AbstractDynamicMetadataResolver:869] - Metadata Resolver FunctionDrivenDyna }}
{{micHTTPMetadataResolver incommon-mdq: Error fetching metadata from origin source }}
{{javax.net.ssl.SSLException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAncho }}
rs parameter must be non-empty
This failure and error persist until I restart jetty. AFAICT there are no changes that occur before this happens, it just randomly starts to fail. Something somewhere somehow goes wiggy. Here is the full stack trace:
{{2023-05-12 12:56:56,518 - 2620:df:8000:4785:0:2:d68:3254/node01rgbckgke63px17gt9q8t468e0781623 - ERROR [org.op }}
{{ensaml.saml.metadata.resolver.impl.AbstractDynamicMetadataResolver:869] - Metadata Resolver FunctionDrivenDyna }}
{{micHTTPMetadataResolver incommon-mdq: Error fetching metadata from origin source }}
{{javax.net.ssl.SSLException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAncho }}
{{rs parameter must be non-empty }}
{{ at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:133) }}
{{ at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:353) }}
{{ at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:296) }}
{{ at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:291) }}
{{ at java.base/sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1690) }}
{{ at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:471) }}
{{ at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:427) }}
at net.shibboleth.utilities.java.support.httpclient.TLSSocketFactory.createLayeredSocket(TLSSocketFact
{{ory.java:324) }}
at net.shibboleth.utilities.java.support.httpclient.TLSSocketFactory.connectSocket(TLSSocketFactory.ja
{{va:280) }}
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOp
{{erator.java:142) }}
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionMan
{{ager.java:376) }}
{{ at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) }}
{{ at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) }}
{{ at org.apache.http.impl.client.cache.CachingExec.callBackend(CachingExec.java:592) }}
{{ at org.apache.http.impl.client.cache.CachingExec.handleCacheMiss(CachingExec.java:356) }}
{{ at org.apache.http.impl.client.cache.CachingExec.execute(CachingExec.java:275) }}
{{ at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) }}
{{ at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) }}
{{ at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) }}
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
{{ at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72) }}
at net.shibboleth.utilities.java.support.httpclient.ContextHandlingHttpClient.doExecute(ContextHandlin
{{gHttpClient.java:132) }}
{{ at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72) }}
{{ at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:221) }}
{{ at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:165) }}
at org.opensaml.saml.metadata.resolver.impl.AbstractDynamicHTTPMetadataResolver.fetchFromOriginSource(
{{AbstractDynamicHTTPMetadataResolver.java:274) }}
at org.opensaml.saml.metadata.resolver.impl.AbstractDynamicMetadataResolver.resolveFromOriginSourceWit
{{hEntityID(AbstractDynamicMetadataResolver.java:842) }}
at org.opensaml.saml.metadata.resolver.impl.AbstractDynamicMetadataResolver.resolveFromOriginSource(Ab
{{stractDynamicMetadataResolver.java:802) }}
at org.opensaml.saml.metadata.resolver.impl.AbstractDynamicMetadataResolver.resolve(AbstractDynamicMet
{{adataResolver.java:705) }}
at org.opensaml.saml.metadata.resolver.impl.AbstractDynamicMetadataResolver.resolve(AbstractDynamicMet
{{adataResolver.java:90) }}
at org.opensaml.saml.metadata.resolver.ChainingMetadataResolver.resolve(ChainingMetadataResolver.java:
{{175) }}
at org.opensaml.saml.metadata.resolver.ChainingMetadataResolver.resolve(ChainingMetadataResolver.java:
{{53) }}
at net.shibboleth.idp.saml.metadata.impl.ReloadingRelyingPartyMetadataProvider.resolve(ReloadingRelyin
{{gPartyMetadataProvider.java:75) }}
at net.shibboleth.idp.saml.metadata.impl.ReloadingRelyingPartyMetadataProvider.resolve(ReloadingRelyin
{{gPartyMetadataProvider.java:44) }}
at org.opensaml.saml.metadata.resolver.impl.PredicateRoleDescriptorResolver.resolve(PredicateRoleDescr
{{iptorResolver.java:260) }}
at org.opensaml.saml.metadata.resolver.impl.PredicateRoleDescriptorResolver.resolveSingle(PredicateRol
{{eDescriptorResolver.java:245) }}
at org.opensaml.saml.metadata.resolver.impl.PredicateRoleDescriptorResolver.resolveSingle(PredicateRol
{{eDescriptorResolver.java:73) }}
at org.opensaml.saml.common.binding.impl.SAMLMetadataLookupHandler.doInvoke(SAMLMetadataLookupHandler.
{{java:158) }}
at org.opensaml.messaging.handler.AbstractMessageHandler.invoke(AbstractMessageHandler.java:93)
at net.shibboleth.idp.profile.impl.WebFlowMessageHandlerAdaptor.doExecute(WebFlowMessageHandlerAdaptor
{{.java:195) }}
{{ at org.opensaml.profile.action.AbstractProfileAction.execute(AbstractProfileAction.java:180) }}
{{ at net.shibboleth.idp.profile.AbstractProfileAction.doExecute(AbstractProfileAction.java:154) }}
{{ at net.shibboleth.idp.profile.AbstractProfileAction.execute(AbstractProfileAction.java:126) }}
{{ at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51) }}
{{ at org.springframework.webflow.action.EvaluateAction.doExecute(EvaluateAction.java:77) }}
{{ at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188) }}
{{ at org.springframework.webflow.execution.AnnotatedAction.execute(AnnotatedAction.java:145) }}
{{ at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51) }}
{{ at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:101) }}
{{ at org.springframework.webflow.engine.State.enter(State.java:194) }}
{{ at org.springframework.webflow.engine.Transition.execute(Transition.java:228) }}
{{ at org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:395) }}
at org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl
{{.java:214) }}
{{ at org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:116) }}
{{ at org.springframework.webflow.engine.Flow.handleEvent(Flow.java:547) }}
{{ at org.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent(FlowExecutionImpl.java:390) }}
at org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent(RequestControlContext
{{Impl.java:210) }}
{{ at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:105) }}
{{ at org.springframework.webflow.engine.State.enter(State.java:194) }}
{{ at org.springframework.webflow.engine.Flow.start(Flow.java:527) }}
{{ at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:368) }}
{{ at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:223) }}
{{ at org.springframework.webflow.executor.FlowExecutorImpl.launchExecution(FlowExecutorImpl.java:139) }}
{{ at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:264) }}
{{ at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) }}
{{ at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) }}
{{ at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) }}
{{ at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) }}
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
{{ at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) }}
{{ at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) }}
{{ at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1459) }}
{{ at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) }}
{{ at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1631) }}
{{ at net.shibboleth.idp.log.SLF4JMDCServletFilter.doFilter(SLF4JMDCServletFilter.java:76) }}
{{ at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) }}
{{ at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) }}
at net.shibboleth.utilities.java.support.net.RequestResponseContextFilter.doFilter(RequestResponseCont
{{extFilter.java:61) }}
{{ at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) }}
{{ at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) }}
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.jav
{{a:201) }}
{{ at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) }}
{{ at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) }}
{{ at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) }}
at net.shibboleth.utilities.java.support.net.DynamicResponseHeaderFilter.doFilter(DynamicResponseHeade
{{rFilter.java:125) }}
{{ at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) }}
{{ at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) }}
{{ at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) }}
{{ at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) }}
at net.shibboleth.utilities.java.support.net.CookieBufferingFilter.doFilter(CookieBufferingFilter.java
{{:68) }}
{{ at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) }}
{{ at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) }}
at net.shibboleth.utilities.java.support.net.SameSiteCookieHeaderFilter.doFilter(SameSiteCookieHeaderF
{{ilter.java:204) }}
{{ at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) }}
{{ at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) }}
{{ at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201) }}
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
{{ at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) }}
{{ at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) }}
{{ at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) }}
{{ at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) }}
{{ at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) }}
{{ at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) }}
{{ at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) }}
{{ at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) }}
{{ at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) }}
{{ at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) }}
{{ at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) }}
{{ at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) }}
{{ at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) }}
{{ at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) }}
{{ at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234) }}
{{ at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) }}
{{ at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) }}
{{ at org.eclipse.jetty.server.Server.handle(Server.java:516) }}
{{ at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) }}
{{ at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) }}
{{ at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) }}
{{ at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) }}
{{ at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) }}
{{ at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) }}
{{ at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555) }}
{{ at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) }}
{{ at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) }}
{{ at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) }}
{{ at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) }}
{{ at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) }}
{{ at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) }}
{{ at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) }}
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java
{{:409) }}
{{ at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) }}
{{ at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) }}
{{ at java.base/java.lang.Thread.run(Thread.java:829) }}
Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the
{{trustAnchors parameter must be non-empty }}
{{ at java.base/sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:102) }}
{{ at java.base/sun.security.validator.Validator.getInstance(Validator.java:181) }}
{{ at java.base/sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:300) }}
{{ at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:176) }}
{{ at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:189) }}
{{ at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:129) }}
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMe
{{ssage.java:1341) }}
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(Certifica
{{teMessage.java:1232) }}
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.jav
{{a:1175) }}
{{ at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392) }}
{{ at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:443) }}
{{ at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:421) }}
{{ at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:183) }}
{{ at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172) }}
{{ at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1507) }}
{{ at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1417) }}
{{ at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:456) }}
{{ ... 128 common frames omitted }}
{{Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty }}
{{ at java.base/java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200) }}
{{ at java.base/java.security.cert.PKIXParameters.<init>(PKIXParameters.java:120) }}
{{ at java.base/java.security.cert.PKIXBuilderParameters.<init>(PKIXBuilderParameters.java:104) }}
at java.base/sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:99)
( https://shibboleth.atlassian.net/browse/IDP-2111#add-comment?atlOrigin=eyJpIjoiMzNjMjNiNTE2NGMwNGMwYzhjYjg1MjA3MGIzOTQwNjYiLCJwIjoiaiJ9 ) Add Comment ( https://shibboleth.atlassian.net/browse/IDP-2111#add-comment?atlOrigin=eyJpIjoiMzNjMjNiNTE2NGMwNGMwYzhjYjg1MjA3MGIzOTQwNjYiLCJwIjoiaiJ9 )
Get Jira notifications on your phone! Download the Jira Cloud app for Android ( https://play.google.com/store/apps/details?id=com.atlassian.android.jira.core&referrer=utm_source%3DNotificationLink%26utm_medium%3DEmail ) or iOS ( https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailNotificationLink&mt=8 ) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100225- sha1:11e4e77 )
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://shibboleth.net/pipermail/commits/attachments/20230517/2502ec42/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jira-generated-image-static-comment-icon-7a604009-9720-4ee9-acc8-ba5ffdf13d64
Type: image/png
Size: 1084 bytes
Desc: not available
URL: <http://shibboleth.net/pipermail/commits/attachments/20230517/2502ec42/attachment-0005.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jira-generated-image-static-trivial-d6468a8f-9871-4c1a-876e-d4eb8c3d0495
Type: image/png
Size: 446 bytes
Desc: not available
URL: <http://shibboleth.net/pipermail/commits/attachments/20230517/2502ec42/attachment-0006.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jira-generated-image-avatar-79709955-1cf3-4759-879d-82b0965b9dd3
Type: image/png
Size: 345 bytes
Desc: not available
URL: <http://shibboleth.net/pipermail/commits/attachments/20230517/2502ec42/attachment-0007.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jira-generated-image-static-smile-f617471b-ef3b-4dc4-b0bf-c835f98f62f5
Type: image/png
Size: 752 bytes
Desc: not available
URL: <http://shibboleth.net/pipermail/commits/attachments/20230517/2502ec42/attachment-0008.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jira-generated-image-static-footer-desktop-logo-18f6da64-bad0-44b4-8d8d-3feda1bec7fc
Type: image/png
Size: 10805 bytes
Desc: not available
URL: <http://shibboleth.net/pipermail/commits/attachments/20230517/2502ec42/attachment-0009.png>
More information about the commits
mailing list