Giter VIP home page Giter VIP logo

dockerized-idp-testbed's Introduction

dockerized-idp-testbed

Used to validate the following Unicon docker images:

More documentation is forthcoming, but it's a full working IDP, SP, and LDAP server that runs under docker-compose.

  1. Update the idp/Dockerfile with the version of the base image you want to test.
  2. Call docker-compose build and then docker-compose up (or docker-compose up -d to run as a daemon).
  3. Browse to https://idptestbed/ (after setting up an etc/hosts file entry pointing to your Docker Host IP), and you can login with staff1 and password.
  4. ctrl+c then docker-compose rm cleans everything up to try again.

Prepping for the Test

If testing the Shibboleth IdP build process locally, you'll want to make sure to docker pull centos:centos7 to ensure that you have the latest before building the IdP. This will ensure that your version will match what Docker Hub will use when it builds.

Build the IdP with docker build --tag="unicon/shibboleth-idp:<version>" .. Make sure the FROM entry in testbed's idp/Dockerfile matches the tag used in the idp build or Docker Compose will pull the wrong version when running the Testbed (see step #1).

If testing the SimpleSAMLphp build process locally, you'll want to make sure to docker pull centos:centos7 to ensure that you have the latest before building the image. This will ensure that your version will match what Docker Hub will use when it builds.

Build the application with docker build --tag="unicon/simplesamlphp:<version>" .. Make sure the FROM entry in testbed's simplesamlphp/Dockerfile matches the tag used in the ssp build or Docker Compose will pull the wrong version when running the Testbed (see step #1).

HTTP/2 support for Shibboleth IdP

HTTP/2 support can be added to Jetty by doing the following:

  1. Adding the following to the idp-http2/Dockerfile:
RUN cd /opt/shib-jetty-base \
    && /opt/jre-home/bin/java -jar ../jetty-home/start.jar --add-to-startd=http2 -Dorg.eclipse.jetty.start.ack.licenses=true
ADD shib-jetty-base/alpn.ini /opt/shib-jetty-base/start.d/

This will automatically accept the GPLv2 license used by the ALPN library utilized by Jetty.

  1. Create and populate idp-http2/shib-jetty-base/alpn.ini:
# ---------------------------------------
# Module: alpn
--module=alpn

## Overrides the order protocols are chosen by the server.
## The default order is that specified by the order of the
## modules declared in start.ini.
# jetty.alpn.protocols=h2-16,http/1.1

## Specifies what protocol to use when negotiation fails.
jetty.alpn.defaultProtocol=http/1.1

## ALPN debug logging on System.err
# jetty.alpn.debug=false
  1. Run the container(s): docker-compose -f docker-compose-http2.yml build && docker-compose -f docker-compose-http2.yml up.

  2. Test:

  • Open the browser network analyzer tools.
  • Ensure that the protocol type is shown. 1.
  • Browse to https://idptestbed/idp/. Chrome, firefox, and safari should show a protocol of "h2".
  • Try curl -k -v https://idptestbed/idp/. "HTTP/1.1" will likely be shown as curl (at least on OS X) does not have http/2 support.

dockerized-idp-testbed's People

Contributors

alanbuxey avatar jtgasper3 avatar nishidayuya avatar savvasmisaghmoayyed avatar xdmnl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dockerized-idp-testbed's Issues

Enhance the CAS client and what it displays

First, In dockerized-idp-testbed/php-cas/var-www-html/php-cas/index.php, I'd recommend commenting out the line:

phpCAS::setExtraCurlOption( CURLOPT_SSLVERSION, 6 );

so that the default behavior of negotiating protocol happens. And then later, where it displays Success, add the following that would print out all the attributes received from the IdP:

<h1>Successful Authentication!</h1>

<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
<p>phpCAS version is <b><?php echo phpCAS::getVersion(); ?></b>.</p>
<p><a href="/">Main Menu</a></p>
<h3>User Attributes</h3>
 <ul>
<?php
foreach (phpCAS::getAttributes() as $key => $value) {
    if (is_array($value)) {
        echo '<li>', $key, ':<ol>';
        foreach ($value as $item) {
            echo '<li><strong>', $item, '</strong></li>';
        }
        echo '</ol></li>';
    } else {
        echo '<li>', $key, ': <strong>', $value, '</strong></li>' . PHP_EOL;
    }
}
    ?>
</ul>
  </body>
</html>

Service Unavailable after docker-compose stop then start

Although i'm unfortunately getting the same shibd listener exception others are getting. My issue has more to do with the fact that when I start up using docker compose, then stop, then try and restart (regardless of making changes or not) i unfortunately get "service unavailable" for the php-cas example.

All containers running, shibd process isn't even available on idp, proxy container is routing correctly because it works on first compose up...

Thoughts?

Build fails due to phpCAS libs issue

Error while building the current :latest

Step 3/14 : RUN git clone --depth=1 --branch=1.3.6 https://github.com/apereo/phpCAS.git apereo/phpCAS && pear upgrade --force --alldeps && cd apereo/phpCAS/utils && pear install --onlyreqdeps PEAR_PackageFileManager2-beta && ant dist -Ddoxygen.path=/usr/bin/doxygen -Dphp.path=/usr/bin/php
---> Running in 2eed41f8cd27
Cloning into 'apereo/phpCAS'...
Note: checking out '7972833e84f6ee5fa41f1479eab5d855109627f5'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

git checkout -b new_branch_name

No releases available for package "pear.php.net/structures_graph"
No releases available for package "pear.php.net/xml_util"
No releases available for package "pear.php.net/pear"
No releases available for package "pear.php.net/archive_tar"
No releases available for package "pear.php.net/console_getopt"
upgrade failed
ERROR: Service 'php-cas' failed to build: The command '/bin/sh -c git clone --depth=1 --branch=1.3.6 https://github.com/apereo/phpCAS.git apereo/phpCAS && pear upgrade --force --alldeps && cd apereo/phpCAS/utils && pear install --onlyreqdeps PEAR_PackageFileManager2-beta && ant dist -Ddoxygen.path=/usr/bin/doxygen -Dphp.path=/usr/bin/php' returned a non-zero code: 1

failure of shibd-redhat to run

dockerized-idp-testbed peterfeeney$ docker-compose up
Creating network "dockerized-idp-testbed_front" with driver "bridge"
Creating network "dockerized-idp-testbed_back" with driver "bridge"
Creating dockerized-idp-testbed_sp_1 ... done
Creating dockerized-idp-testbed_httpd-proxy_1 ... done
Creating dockerized-idp-testbed_ldap_1 ... done
Creating dockerized-idp-testbed_idp_1 ... done
Creating dockerized-idp-testbed_simplesamlphp_1 ... done
Creating dockerized-idp-testbed_php-cas_1 ... done
Attaching to dockerized-idp-testbed_sp_1, dockerized-idp-testbed_ldap_1, dockerized-idp-testbed_httpd-proxy_1, dockerized-idp-testbed_idp_1, dockerized-idp-testbed_simplesamlphp_1, dockerized-idp-testbed_php-cas_1
sp_1 | /usr/local/bin/httpd-shibd-foreground: line 7: /etc/shibboleth/shibd-redhat: Permission denied
sp_1 | httpd-error [Thu May 23 11:15:22.795194 2019] [suexec:notice] [pid 1:tid AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)

this is due to the file having no execute properties set

SP docker file needs to be

FROM unicon/shibboleth-sp

RUN yum -y update
&& yum -y install php mod_ssl

COPY etc-shibboleth /etc/shibboleth/
RUN chmod 755 /etc/shibboleth/shibd-redhat
COPY etc-httpd/ /etc/httpd/
COPY var-www-html/ /var/www/html/

fix works on docker for Mac and docker for windows

Instructions on how to integrate with external IDPs

It would be super useful to have instructions on what needs to be done in SP image to integrate with external IDPs instead of using the internal one (in the docker container). And perhaps a separate branch with this SP integrated with testshib.org IDP, etc.

Seeing a lot of mirror timeouts....

Trying to run docker-compose build and getting a lot of:

http://download.opensuse.org/repositories/security%3A/shibboleth/CentOS_7/x86_64/libxmltooling8-3.0.4-3.2.x86_64.rpm: [Errno 12] Timeout on http://download.opensuse.org/repositories/security:/shibboleth/CentOS_7/x86_64/libxmltooling8-3.0.4-3.2.x86_64.rpm: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds')

not working on Docker for Windows

php_cas, sp and httpd_proxy fail and exit under Docker for Windows.
C:\Users\xxxx\Documents\GitHub\dockerized-idp-testbed> docker-compose up
Starting dockerized-idp-testbed_sp_1 ... done
Starting dockerized-idp-testbed_ldap_1 ... done
Starting dockerized-idp-testbed_httpd-proxy_1 ... done
Starting dockerized-idp-testbed_idp_1 ... done
Starting dockerized-idp-testbed_simplesamlphp_1 ... done
Creating dockerized-idp-testbed_php-cas_1 ... done
Attaching to dockerized-idp-testbed_ldap_1, dockerized-idp-testbed_sp_1, dockerized-idp-testbed_httpd-proxy_1, dockerized-idp-testbed_idp_1, dockerized-idp-testbed_simplesamlphp_1, dockerized-idp-testbed_php-cas_1
ldap_1 | [01/Aug/2018:12:45:33.784126900 +0000] conn=1 fd=64 slot=64 connection from 172.19.0.4 to 172.19.0.3
ldap_1 | [01/Aug/2018:12:45:33.784264600 +0000] conn=1 op=0 BIND dn="cn=admin,dc=idptestbed" method=128 version=3
ldap_1 | [01/Aug/2018:12:45:33.784583000 +0000] conn=1 op=0 RESULT err=0 tag=97 nentries=0 etime=0.0000414900 dn="cn=admin,dc=idptestbed"ldap_1 | [01/Aug/2018:12:45:33.785192000 +0000] conn=1 op=1 UNBIND
ldap_1 | [01/Aug/2018:12:45:33.785204800 +0000] conn=1 op=1 fd=64 closed - U1
ldap_1 | [01/Aug/2018:12:55:01.056783100 +0000] conn=1 fd=64 slot=64 connection from 172.19.0.5 to 172.19.0.3
ldap_1 | [01/Aug/2018:12:55:01.056954300 +0000] conn=1 op=0 BIND dn="cn=admin,dc=idptestbed" method=128 version=3
ldap_1 | [01/Aug/2018:12:55:01.057234100 +0000] conn=1 op=0 RESULT err=0 tag=97 nentries=0 etime=0.0000398600 dn="cn=admin,dc=idptestbed"ldap_1 | [01/Aug/2018:12:55:01.057919600 +0000] conn=1 op=1 UNBIND
ldap_1 | [01/Aug/2018:12:55:01.057936000 +0000] conn=1 op=1 fd=64 closed - U1
sp_1 | Starting shibd: [ OK ]
sp_1 | httpd-error [Thu Aug 02 14:07:11.792174 2018] [suexec:notice] [pid 1:tid AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
httpd-proxy_1 | standard_init_linux.go:190: exec user process caused "no such file or directory"
sp_1 | httpd-ssl-error [Thu Aug 02 14:07:11.793217 2018] [ssl:warn] [pid 1:tid AH01909: RSA certificate configured for idptestbed:443 does NOT include an ID which matches the server name
sp_1 | httpd-error [Thu Aug 02 14:07:11.793357 2018] [ssl:warn] [pid 1:tid AH01916: Init: (idptestbed:443) You configured HTTP(80) on the standard HTTPS(443) port!
sp_1 | httpd-error [Thu Aug 02 14:07:11.818261 2018] [auth_digest:notice] [pid 1:tid AH01757: generating secret for digest authentication ...
sp_1 | httpd-error [Thu Aug 02 14:07:11.818300 2018] [auth_digest:error] [pid 1:tid (17)File exists: AH01762: Failed to create shared memory segment on file /run/httpd/authdigest_shm.1
sp_1 | httpd-error [Thu Aug 02 14:07:11.818307 2018] [auth_digest:error] [pid 1:tid (17)File exists: AH01760: failed to initialize shm

  • all nonce-count checking, one-time nonces, and MD5-sess algorithm disabled
    sp_1 | [Thu Aug 02 14:07:11.818310 2018] [:emerg] [pid 1] AH00020: Configuration Failed, exiting
    idp_1 | Running Jetty:
    idp_1 | 2018-08-02 14:07:13.104:INFO::main: Logging initialized @283ms
    idp_1 | 2018-08-02 14:07:13.590:INFO:oejs.Server:main: jetty-9.3.23.v20180228, build timestamp: 2018-02-28T21:46:51Z, git hash: 0554f8d8b4c884de6e35a9f7a5481b78e2f34b4f
    idp_1 | 2018-08-02 14:07:13.763:INFO:oejs.AbstractNCSARequestLog:main: Opened /opt/shib-jetty-base/logs/2018_08_02.request.log
    idp_1 | 2018-08-02 14:07:13.774:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///opt/shib-jetty-base/webapps/] at interval 1
    php-cas_1 | standard_init_linux.go:190: exec user process caused "no such file or directory"
    dockerized-idp-testbed_sp_1 exited with code 1
    dockerized-idp-testbed_httpd-proxy_1 exited with code 1
    dockerized-idp-testbed_simplesamlphp_1 exited with code 1
    dockerized-idp-testbed_php-cas_1 exited with code 1
    idp_1 | 2018-08-02 14:07:16.347:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=1782ms
    idp_1 | 2018-08-02 14:07:16.399:INFO:/idp:main: No Spring WebApplicationInitializer types detected on classpath
    idp_1 | 2018-08-02 14:07:16.524:WARN:oejs.SecurityHandler:main: [email protected]@457e2f02{/idp,[file:///tmp/jetty-0.0.0.0-8443-webapp-_idp-any-7781979778056300338.dir/webinf/, file:///opt/shibboleth-identity-provider-3.3.3/webapp/],STARTING}{/opt/shibboleth-idp/webapp/} has uncovered http methods for path: /*
    idp_1 | 2018-08-02 14:07:16.639:INFO:/idp:main: Initializing Spring root WebApplicationContext
    idp_1 | 2018-08-02 14:07:18,174 - INFO [net.shibboleth.idp.log.LogbackLoggingService:240] - Shibboleth IdP Version 3.3.3
    idp_1 | 2018-08-02 14:07:18,178 - INFO [net.shibboleth.idp.log.LogbackLoggingService:241] - Java version='1.8.0_172' vendor='Azul Systems, Inc.'
    idp_1 | 2018-08-02 14:07:18,200 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:199] - Service 'shibboleth.LoggingService': Reload time set to: 300000, starting refresh thread
    idp_1 | 2018-08-02 14:07:18,264 - INFO [org.opensaml.core.config.InitializationService:48] - Initializing OpenSAML using the Java Services API
    idp_1 | 2018-08-02 14:07:18,763 - INFO [org.opensaml.xmlsec.algorithm.AlgorithmRegistry:206] - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2001/04/xmlenc#ripemd160
    idp_1 | 2018-08-02 14:07:18,766 - INFO [org.opensaml.xmlsec.algorithm.AlgorithmRegistry:206] - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160
    idp_1 | 2018-08-02 14:07:18,775 - INFO [org.opensaml.xmlsec.algorithm.AlgorithmRegistry:206] - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160
    idp_1 | 2018-08-02 14:07:19,069 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:172] - Service 'shibboleth.AttributeFilterService': Performing initial load
    idp_1 | 2018-08-02 14:07:19,069 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:258] - Service 'shibboleth.AttributeFilterService': Reloading service configuration
    idp_1 | 2018-08-02 14:07:19,075 - INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [/opt/shibboleth-idp/conf/attribute-filter.xml]
    idp_1 | 2018-08-02 14:07:19,105 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:583] - Refreshing ApplicationContext:shibboleth.AttributeFilterService: startup date [Thu Aug 02 14:07:19 UTC 2018]; parent: Root WebApplicationContext
    idp_1 | 2018-08-02 14:07:19,150 - INFO [net.shibboleth.ext.spring.service.ReloadableSpringService:380] - Service 'shibboleth.AttributeFilterService': Completed reload and swapped in latest configuration for service 'shibboleth.AttributeFilterService'
    idp_1 | 2018-08-02 14:07:19,151 - INFO [net.shibboleth.ext.spring.service.ReloadableSpringService:387] - Service 'shibboleth.AttributeFilterService': Reload complete
    idp_1 | 2018-08-02 14:07:19,153 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:199] - Service 'shibboleth.AttributeFilterService': Reload time set to: 900000, starting refresh thread
    idp_1 | 2018-08-02 14:07:19,160 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:172] - Service 'shibboleth.AttributeResolverService': Performing initial load
    idp_1 | 2018-08-02 14:07:19,160 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:258] - Service 'shibboleth.AttributeResolverService': Reloading service configuration
    idp_1 | 2018-08-02 14:07:19,163 - INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [/opt/shibboleth-idp/conf/attribute-resolver.xml]
    idp_1 | 2018-08-02 14:07:19,229 - INFO [net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginParser:60] - Parsing configuration for AttributeDefinition plugin with id: uid
    idp_1 | 2018-08-02 14:07:19,230 - INFO [net.shibboleth.idp.attribute.resolver.spring.ResolverPluginDependencyParser:54] - Parsing configuration for Dependency with pluginId: myLDAP
    idp_1 | 2018-08-02 14:07:19,244 - WARN [net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser:78] - Attribute Definition 'uid': Configuration contains at least one element in the deprecated 'urn:mace:shibboleth:2.0:resolver' namespace.
    idp_1 | 2018-08-02 14:07:19,278 - WARN [net.shibboleth.idp.attribute.resolver.spring.enc.BaseAttributeEncoderParser:80] - Configuration
    contains at least one element in the deprecated 'urn:mace:shibboleth:2.0:attribute:encoder' namespace.
    idp_1 | 2018-08-02 14:07:19,280 - INFO [net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginParser:60] - Parsing configuration for AttributeDefinition plugin with id: mail
    idp_1 | 2018-08-02 14:07:19,280 - INFO [net.shibboleth.idp.attribute.resolver.spring.ResolverPluginDependencyParser:54] - Parsing configuration for Dependency with pluginId: myLDAP
    idp_1 | 2018-08-02 14:07:19,281 - INFO [net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginParser:60] - Parsing configuration for AttributeDefinition plugin with id: surname
    idp_1 | 2018-08-02 14:07:19,281 - INFO [net.shibboleth.idp.attribute.resolver.spring.ResolverPluginDependencyParser:54] - Parsing configuration for Dependency with pluginId: myLDAP
    idp_1 | 2018-08-02 14:07:19,282 - INFO [net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginParser:60] - Parsing configuration for AttributeDefinition plugin with id: givenName
    idp_1 | 2018-08-02 14:07:19,283 - INFO [net.shibboleth.idp.attribute.resolver.spring.ResolverPluginDependencyParser:54] - Parsing configuration for Dependency with pluginId: myLDAP
    idp_1 | 2018-08-02 14:07:19,285 - INFO [net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginParser:60] - Parsing configuration for AttributeDefinition plugin with id: eduPersonPrincipalName
    idp_1 | 2018-08-02 14:07:19,286 - INFO [net.shibboleth.idp.attribute.resolver.spring.ResolverPluginDependencyParser:54] - Parsing configuration for Dependency with pluginId: myLDAP
    idp_1 | 2018-08-02 14:07:19,293 - INFO [net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginParser:60] - Parsing configuration for DataConnector plugin with id: myLDAP
    idp_1 | 2018-08-02 14:07:19,294 - WARN [net.shibboleth.idp.attribute.resolver.spring.dc.AbstractDataConnectorParser:117] - Data Connector 'myLDAP': Configuration contains at least one element in the deprecated 'urn:mace:shibboleth:2.0:resolver:dc' namespace.
    idp_1 | 2018-08-02 14:07:19,312 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:583] - Refreshing ApplicationContext:shibboleth.AttributeResolverService: startup date [Thu Aug 02 14:07:19 UTC 2018]; parent: Root WebApplicationContext
    idp_1 | 2018-08-02 14:07:19,580 - ERROR [net.shibboleth.idp.attribute.resolver.dc.ldap.impl.ConnectionFactoryValidator:152] - Connection factory validation failed
    idp_1 | org.ldaptive.provider.ConnectionException: javax.naming.CommunicationException: ldap:389 [Root exception is java.net.ConnectException: Connection refused (Connection refused)]
    idp_1 | at org.ldaptive.provider.jndi.JndiConnectionFactory.createInternal(JndiConnectionFactory.java:102)
    idp_1 | Caused by: javax.naming.CommunicationException: ldap:389
    idp_1 | at com.sun.jndi.ldap.Connection.(Connection.java:216)
    idp_1 | Caused by: java.net.ConnectException: Connection refused (Connection refused)
    idp_1 | at java.net.PlainSocketImpl.socketConnect(Native Method)
    idp_1 | 2018-08-02 14:07:19,599 - ERROR [net.shibboleth.idp.attribute.resolver.dc.ldap.impl.LDAPDataConnector:150] - Data Connector 'myLDAP': Invalid connector configuration
    idp_1 | net.shibboleth.idp.attribute.resolver.dc.ValidationException: [org.ldaptive.provider.ConnectionException@464606033::resultCode=PROTOCOL_ERROR, matchedDn=null, responseControls=null, referralURLs=null, messageId=-1, message=javax.naming.CommunicationException: ldap:389 [Root
    exception is java.net.ConnectException: Connection refused (Connection refused)], providerException=javax.naming.CommunicationException: ldap:389 [Root exception is java.net.ConnectException: Connection refused (Connection refused)]]
    idp_1 | at net.shibboleth.idp.attribute.resolver.dc.ldap.impl.ConnectionFactoryValidator.validate(ConnectionFactoryValidator.java:154)
    idp_1 | Caused by: org.ldaptive.provider.ConnectionException: javax.naming.CommunicationException: ldap:389 [Root exception is java.net.ConnectException: Connection refused (Connection refused)]
    idp_1 | at org.ldaptive.provider.jndi.JndiConnectionFactory.createInternal(JndiConnectionFactory.java:102)
    idp_1 | Caused by: javax.naming.CommunicationException: ldap:389
    idp_1 | at com.sun.jndi.ldap.Connection.(Connection.java:216)
    idp_1 | Caused by: java.net.ConnectException: Connection refused (Connection refused)
    idp_1 | at java.net.PlainSocketImpl.socketConnect(Native Method)
    idp_1 | 2018-08-02 14:07:19,603 - WARN [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:551] - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myLDAP': Invocation of init method failed; nested exception is net.shibboleth.utilities.java.support.component.ComponentInitializationException: Data Connector 'myLDAP': Invalid connector configuration
    idp_1 | 2018-08-02 14:07:19,609 - ERROR [net.shibboleth.utilities.java.support.service.AbstractReloadableService:181] - Service 'shibboleth.AttributeResolverService': Initial load failed
    idp_1 | net.shibboleth.utilities.java.support.service.ServiceException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myLDAP': Invocation of init method failed; nested exception is net.shibboleth.utilities.java.support.component.ComponentInitializationException: Data Connector 'myLDAP': Invalid connector configuration
    idp_1 | at net.shibboleth.ext.spring.service.ReloadableSpringService.doReload(ReloadableSpringService.java:336)
    idp_1 | Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myLDAP': Invocation of init method failed; nested exception is net.shibboleth.utilities.java.support.component.ComponentInitializationException: Data Connector 'myLDAP': Invalid connector configuration
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1630)
    idp_1 | Caused by: net.shibboleth.utilities.java.support.component.ComponentInitializationException: Data Connector 'myLDAP': Invalid connector configuration
    idp_1 | at net.shibboleth.idp.attribute.resolver.dc.ldap.impl.LDAPDataConnector.doInitialize(LDAPDataConnector.java:151)
    idp_1 | Caused by: net.shibboleth.idp.attribute.resolver.dc.ValidationException: [org.ldaptive.provider.ConnectionException@464606033::resultCode=PROTOCOL_ERROR, matchedDn=null, responseControls=null, referralURLs=null, messageId=-1, message=javax.naming.CommunicationException: ldap:389 [Root exception is java.net.ConnectException: Connection refused (Connection refused)], providerException=javax.naming.CommunicationException: ldap:389 [Root exception is java.net.ConnectException: Connection refused (Connection refused)]]
    idp_1 | at net.shibboleth.idp.attribute.resolver.dc.ldap.impl.ConnectionFactoryValidator.validate(ConnectionFactoryValidator.java:154)
    idp_1 | Caused by: org.ldaptive.provider.ConnectionException: javax.naming.CommunicationException: ldap:389 [Root exception is java.net.ConnectException: Connection refused (Connection refused)]
    idp_1 | at org.ldaptive.provider.jndi.JndiConnectionFactory.createInternal(JndiConnectionFactory.java:102)
    idp_1 | Caused by: javax.naming.CommunicationException: ldap:389
    idp_1 | at com.sun.jndi.ldap.Connection.(Connection.java:216)
    idp_1 | Caused by: java.net.ConnectException: Connection refused (Connection refused)
    idp_1 | at java.net.PlainSocketImpl.socketConnect(Native Method)
    idp_1 | 2018-08-02 14:07:19,611 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:183] - Service 'shibboleth.AttributeResolverService': Continuing to poll configuration
    idp_1 | 2018-08-02 14:07:19,611 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:199] - Service 'shibboleth.AttributeResolverService': Reload time set to: 900000, starting refresh thread
    idp_1 | 2018-08-02 14:07:19,623 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:172] - Service 'shibboleth.NameIdentifierGenerationService': Performing initial load
    idp_1 | 2018-08-02 14:07:19,625 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:258] - Service 'shibboleth.NameIdentifierGenerationService': Reloading service configuration
    idp_1 | 2018-08-02 14:07:19,629 - INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [/opt/shibboleth-idp/conf/saml-nameid.xml]
    idp_1 | 2018-08-02 14:07:19,658 - INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [/opt/shibboleth-idp/system/conf/saml-nameid-system.xml]
    idp_1 | 2018-08-02 14:07:19,664 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:583] - Refreshing ApplicationContext:shibboleth.NameIdentifierGenerationService: startup date [Thu Aug 02 14:07:19 UTC 2018]; parent: Root WebApplicationContext
    idp_1 | 2018-08-02 14:07:19,742 - INFO [net.shibboleth.ext.spring.service.ReloadableSpringService:380] - Service 'shibboleth.NameIdentifierGenerationService': Completed reload and swapped in latest configuration for service 'shibboleth.NameIdentifierGenerationService'
    idp_1 | 2018-08-02 14:07:19,742 - INFO [net.shibboleth.ext.spring.service.ReloadableSpringService:387] - Service 'shibboleth.NameIdentifierGenerationService': Reload complete
    idp_1 | 2018-08-02 14:07:19,744 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:199] - Service 'shibboleth.NameIdentifierGenerationService': Reload time set to: 900000, starting refresh thread
    idp_1 | 2018-08-02 14:07:19,751 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:172] - Service 'shibboleth.RelyingPartyResolverService': Performing initial load
    idp_1 | 2018-08-02 14:07:19,751 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:258] - Service 'shibboleth.RelyingPartyResolverService': Reloading service configuration
    idp_1 | 2018-08-02 14:07:19,752 - INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [/opt/shibboleth-idp/conf/relying-party.xml]
    idp_1 | 2018-08-02 14:07:19,779 - INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [/opt/shibboleth-idp/conf/credentials.xml]
    idp_1 | 2018-08-02 14:07:19,800 - INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [/opt/shibboleth-idp/system/conf/relying-party-system.xml]
    idp_1 | 2018-08-02 14:07:19,822 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:583] - Refreshing ApplicationContext:shibboleth.RelyingPartyResolverService: startup date [Thu Aug 02 14:07:19 UTC 2018]; parent: Root WebApplicationContext
    idp_1 | 2018-08-02 14:07:20,162 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:172] - Service 'shibboleth.MetadataResolverService': Performing initial load
    idp_1 | 2018-08-02 14:07:20,162 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:258] - Service 'shibboleth.MetadataResolverService': Reloading service configuration
    idp_1 | 2018-08-02 14:07:20,164 - INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [/opt/shibboleth-idp/conf/metadata-providers.xml]
    idp_1 | 2018-08-02 14:07:20,199 - INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [/opt/shibboleth-idp/system/conf/metadata-providers-system.xml]
    idp_1 | 2018-08-02 14:07:20,207 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:583] - Refreshing ApplicationContext:shibboleth.MetadataResolverService: startup date [Thu Aug 02 14:07:20 UTC 2018]; parent: Root WebApplicationContext
    idp_1 | 2018-08-02 14:07:20,277 - ERROR [net.shibboleth.idp.saml.metadata.impl.AttributeMappingNodeProcessor:144] - Requested Attributes Mapper: Invalid Attribute resolver configuration.
    idp_1 | 2018-08-02 14:07:20,290 - INFO [org.opensaml.saml.metadata.resolver.impl.AbstractReloadingMetadataResolver:504] - Metadata Resolver FilesystemMetadataResolver TestSP: New metadata successfully loaded for '/opt/shibboleth-idp/metadata/sp-metadata.xml'
    idp_1 | 2018-08-02 14:07:20,290 - INFO [org.opensaml.saml.metadata.resolver.impl.AbstractReloadingMetadataResolver:324] - Metadata Resolver FilesystemMetadataResolver TestSP: Next refresh cycle for metadata provider '/opt/shibboleth-idp/metadata/sp-metadata.xml' will occur on '2018-08-02T17:07:20.258Z' ('2018-08-02T17:07:20.258Z' local time)
    idp_1 | 2018-08-02 14:07:20,297 - ERROR [net.shibboleth.idp.saml.metadata.impl.AttributeMappingNodeProcessor:144] - Requested Attributes Mapper: Invalid Attribute resolver configuration.
    idp_1 | 2018-08-02 14:07:20,299 - INFO [org.opensaml.saml.metadata.resolver.impl.AbstractReloadingMetadataResolver:504] - Metadata Resolver FilesystemMetadataResolver TestSimpleSAMLphp: New metadata successfully loaded for '/opt/shibboleth-idp/metadata/ssp-metadata.xml'
    idp_1 | 2018-08-02 14:07:20,299 - INFO [org.opensaml.saml.metadata.resolver.impl.AbstractReloadingMetadataResolver:324] - Metadata Resolver FilesystemMetadataResolver TestSimpleSAMLphp: Next refresh cycle for metadata provider '/opt/shibboleth-idp/metadata/ssp-metadata.xml' will occur on '2018-08-02T17:07:20.295Z' ('2018-08-02T17:07:20.295Z' local time)
    idp_1 | 2018-08-02 14:07:20,307 - INFO [net.shibboleth.ext.spring.service.ReloadableSpringService:380] - Service 'shibboleth.MetadataResolverService': Completed reload and swapped in latest configuration for service 'shibboleth.MetadataResolverService'
    idp_1 | 2018-08-02 14:07:20,307 - INFO [net.shibboleth.ext.spring.service.ReloadableSpringService:387] - Service 'shibboleth.MetadataResolverService': Reload complete
    idp_1 | 2018-08-02 14:07:20,387 - INFO [net.shibboleth.ext.spring.service.ReloadableSpringService:380] - Service 'shibboleth.RelyingPartyResolverService': Completed reload and swapped in latest configuration for service 'shibboleth.RelyingPartyResolverService'
    idp_1 | 2018-08-02 14:07:20,387 - INFO [net.shibboleth.ext.spring.service.ReloadableSpringService:387] - Service 'shibboleth.RelyingPartyResolverService': Reload complete
    idp_1 | 2018-08-02 14:07:20,388 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:199] - Service 'shibboleth.RelyingPartyResolverService': Reload time set to: 900000, starting refresh thread
    idp_1 | 2018-08-02 14:07:20,415 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:172] - Service 'shibboleth.ReloadableAccessControlService': Performing initial load
    idp_1 | 2018-08-02 14:07:20,424 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:258] - Service 'shibboleth.ReloadableAccessControlService': Reloading service configuration
    idp_1 | 2018-08-02 14:07:20,427 - INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [/opt/shibboleth-idp/conf/access-control.xml]
    idp_1 | 2018-08-02 14:07:20,440 - INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [/opt/shibboleth-idp/system/conf/access-control-system.xml]
    idp_1 | 2018-08-02 14:07:20,461 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:583] - Refreshing ApplicationContext:shibboleth.ReloadableAccessControlService: startup date [Thu Aug 02 14:07:20 UTC 2018]; parent: Root WebApplicationContext
    idp_1 | 2018-08-02 14:07:20,518 - INFO [net.shibboleth.ext.spring.service.ReloadableSpringService:380] - Service 'shibboleth.ReloadableAccessControlService': Completed reload and swapped in latest configuration for service 'shibboleth.ReloadableAccessControlService'
    idp_1 | 2018-08-02 14:07:20,518 - INFO [net.shibboleth.ext.spring.service.ReloadableSpringService:387] - Service 'shibboleth.ReloadableAccessControlService': Reload complete
    idp_1 | 2018-08-02 14:07:20,520 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:199] - Service 'shibboleth.ReloadableAccessControlService': Reload time set to: 300000, starting refresh thread
    idp_1 | 2018-08-02 14:07:20,544 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:172] - Service 'shibboleth.ReloadableCASServiceRegistry': Performing initial load
    idp_1 | 2018-08-02 14:07:20,544 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:258] - Service 'shibboleth.ReloadableCASServiceRegistry': Reloading service configuration
    idp_1 | 2018-08-02 14:07:20,547 - INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [/opt/shibboleth-idp/conf/cas-protocol.xml]
    idp_1 | 2018-08-02 14:07:20,556 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:583] - Refreshing ApplicationContext:shibboleth.ReloadableCASServiceRegistry: startup date [Thu Aug 02 14:07:20 UTC 2018]; parent: Root WebApplicationContext
    idp_1 | 2018-08-02 14:07:20,579 - INFO [net.shibboleth.ext.spring.service.ReloadableSpringService:380] - Service 'shibboleth.ReloadableCASServiceRegistry': Completed reload and swapped in latest configuration for service 'shibboleth.ReloadableCASServiceRegistry'
    idp_1 | 2018-08-02 14:07:20,579 - INFO [net.shibboleth.ext.spring.service.ReloadableSpringService:387] - Service 'shibboleth.ReloadableCASServiceRegistry': Reload complete
    idp_1 | 2018-08-02 14:07:20,580 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:199] - Service 'shibboleth.ReloadableCASServiceRegistry': Reload time set to: 900000, starting refresh thread
    idp_1 | 2018-08-02 14:07:20,762 - WARN [net.shibboleth.ext.spring.context.DelimiterAwareApplicationContext:551] - Exception encountered
    during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name
    'shibboleth.metrics.RegisterMetricSets$child#0' defined in file [/opt/shibboleth-idp/system/conf/../../conf/admin/metrics.xml]: Cannot resolve reference to bean 'shibboleth.metrics.AttributeResolverGaugeSet' while setting bean property 'arguments' with key [7]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shibboleth.metrics.AttributeResolverGaugeSet' defined in file [/opt/shibboleth-idp/system/conf/general-admin-system.xml]: Invocation of init method failed; nested exception is net.shibboleth.utilities.java.support.component.ComponentInitializationException: Injected service was null or not an AttributeResolver
    idp_1 | 2018-08-02 14:07:20,775 - INFO [net.shibboleth.ext.spring.context.DelimiterAwareApplicationContext:984] - Closing Root WebApplicationContext: startup date [Thu Aug 02 14:07:16 UTC 2018]; root of context hierarchy
    idp_1 | 2018-08-02 14:07:20,779 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:984] - Closing ApplicationContext:shibboleth.ReloadableCASServiceRegistry: startup date [Thu Aug 02 14:07:20 UTC 2018]; parent: Root WebApplicationContext
    idp_1 | 2018-08-02 14:07:20,781 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:207] - Service 'shibboleth.ReloadableCASServiceRegistry': Starting shutdown
    idp_1 | 2018-08-02 14:07:20,782 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:216] - Service 'shibboleth.ReloadableCASServiceRegistry': Completing shutdown
    idp_1 | 2018-08-02 14:07:20,783 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:984] - Closing ApplicationContext:shibboleth.ReloadableAccessControlService: startup date [Thu Aug 02 14:07:20 UTC 2018]; parent: Root WebApplicationContext
    idp_1 | 2018-08-02 14:07:20,783 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:207] - Service 'shibboleth.ReloadableAccessControlService': Starting shutdown
    idp_1 | 2018-08-02 14:07:20,784 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:216] - Service 'shibboleth.ReloadableAccessControlService': Completing shutdown
    idp_1 | 2018-08-02 14:07:20,785 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:984] - Closing ApplicationContext:shibboleth.RelyingPartyResolverService: startup date [Thu Aug 02 14:07:19 UTC 2018]; parent: Root WebApplicationContext
    idp_1 | 2018-08-02 14:07:20,788 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:207] - Service 'shibboleth.RelyingPartyResolverService': Starting shutdown
    idp_1 | 2018-08-02 14:07:20,790 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:216] - Service 'shibboleth.RelyingPartyResolverService': Completing shutdown
    idp_1 | 2018-08-02 14:07:20,791 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:984] - Closing ApplicationContext:shibboleth.MetadataResolverService: startup date [Thu Aug 02 14:07:20 UTC 2018]; parent: Root WebApplicationContext
    idp_1 | 2018-08-02 14:07:20,797 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:207] - Service 'shibboleth.MetadataResolverService': Starting shutdown
    idp_1 | 2018-08-02 14:07:20,798 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:216] - Service 'shibboleth.MetadataResolverService': Completing shutdown
    idp_1 | 2018-08-02 14:07:20,803 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:984] - Closing ApplicationContext:shibboleth.NameIdentifierGenerationService: startup date [Thu Aug 02 14:07:19 UTC 2018]; parent: Root WebApplicationContext
    idp_1 | 2018-08-02 14:07:20,804 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:207] - Service 'shibboleth.NameIdentifierGenerationService': Starting shutdown
    idp_1 | 2018-08-02 14:07:20,805 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:216] - Service 'shibboleth.NameIdentifierGenerationService': Completing shutdown
    idp_1 | 2018-08-02 14:07:20,806 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:207] - Service 'shibboleth.AttributeResolverService': Starting shutdown
    idp_1 | 2018-08-02 14:07:20,809 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:216] - Service 'shibboleth.AttributeResolverService': Completing shutdown
    idp_1 | 2018-08-02 14:07:20,811 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:984] - Closing ApplicationContext:shibboleth.AttributeFilterService: startup date [Thu Aug 02 14:07:19 UTC 2018]; parent: Root WebApplicationContext
    idp_1 | 2018-08-02 14:07:20,814 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:207] - Service 'shibboleth.AttributeFilterService': Starting shutdown
    idp_1 | 2018-08-02 14:07:20,814 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:216] - Service 'shibboleth.AttributeFilterService': Completing shutdown
    idp_1 | 2018-08-02 14:07:20,821 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:207] - Service 'shibboleth.LoggingService': Starting shutdown
    idp_1 | 2018-08-02 14:07:20,822 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:216] - Service 'shibboleth.LoggingService': Completing shutdown
    idp_1 | 2018-08-02 14:07:20,850 - ERROR [org.springframework.web.context.ContextLoader:350] - Context initialization failed
    idp_1 | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shibboleth.metrics.RegisterMetricSets$child#0' defined in file [/opt/shibboleth-idp/system/conf/../../conf/admin/metrics.xml]: Cannot resolve reference to bean 'shibboleth.metrics.AttributeResolverGaugeSet' while setting bean property 'arguments' with key [7]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shibboleth.metrics.AttributeResolverGaugeSet' defined in file [/opt/shibboleth-idp/system/conf/general-admin-system.xml]: Invocation of init method failed; nested exception is net.shibboleth.utilities.java.support.component.ComponentInitializationException: Injected service was null or not an AttributeResolver
    idp_1 | at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
    idp_1 | Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shibboleth.metrics.AttributeResolverGaugeSet' defined in file [/opt/shibboleth-idp/system/conf/general-admin-system.xml]: Invocation of init method failed; nested exception is
    net.shibboleth.utilities.java.support.component.ComponentInitializationException: Injected service was null or not an AttributeResolver
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1630)
    idp_1 | Caused by: net.shibboleth.utilities.java.support.component.ComponentInitializationException: Injected service was null or not an AttributeResolver
    idp_1 | at net.shibboleth.idp.attribute.resolver.impl.AttributeResolverServiceGaugeSet.doInitialize(AttributeResolverServiceGaugeSet.java:104)
    idp_1 | 2018-08-02 14:07:20.851:WARN:oejw.WebAppContext:main: Failed startup of context o.e.j.w.WebAppContext@457e2f02{/idp,[file:///tmp/jetty-0.0.0.0-8443-webapp-_idp-any-7781979778056300338.dir/webinf/, file:///opt/shibboleth-identity-provider-3.3.3/webapp/],UNAVAILABLE}{/opt/shibboleth-idp/webapp/}
    idp_1 | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shibboleth.metrics.RegisterMetricSets$child#0' defined in file [/opt/shibboleth-idp/system/conf/../../conf/admin/metrics.xml]: Cannot resolve reference to bean 'shibboleth.metrics.AttributeResolverGaugeSet' while setting bean property 'arguments' with key [7]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shibboleth.metrics.AttributeResolverGaugeSet' defined in file [/opt/shibboleth-idp/system/conf/general-admin-system.xml]: Invocation of init method failed; nested exception is net.shibboleth.utilities.java.support.component.ComponentInitializationException: Injected service was null or not an AttributeResolver
    idp_1 | at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
    idp_1 | at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
    idp_1 | at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:382)
    idp_1 | at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:157)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1533)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1280)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
    idp_1 | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    idp_1 | at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
    idp_1 | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
    idp_1 | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
    idp_1 | at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
    idp_1 | at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
    idp_1 | at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
    idp_1 | at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:843)
    idp_1 | at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:533)
    idp_1 | at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:816)
    idp_1 | at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:345)
    idp_1 | at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1406)
    idp_1 | at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1368)
    idp_1 | at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:778)
    idp_1 | at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:262)
    idp_1 | at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:522)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:41)
    idp_1 | at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:188)
    idp_1 | at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:499)
    idp_1 | at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:147)
    idp_1 | at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:180)
    idp_1 | at org.eclipse.jetty.deploy.providers.WebAppProvider.fileAdded(WebAppProvider.java:458)
    idp_1 | at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:64)
    idp_1 | at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:610)
    idp_1 | at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:529)
    idp_1 | at org.eclipse.jetty.util.Scanner.scan(Scanner.java:392)
    idp_1 | at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:313)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:150)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:561)
    idp_1 | at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:236)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
    idp_1 | at org.eclipse.jetty.server.Server.start(Server.java:427)
    idp_1 | at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
    idp_1 | at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
    idp_1 | at org.eclipse.jetty.server.Server.doStart(Server.java:394)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1540)
    idp_1 | at java.security.AccessController.doPrivileged(Native Method)
    idp_1 | at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1462)
    idp_1 | Caused by:
    idp_1 | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shibboleth.metrics.AttributeResolverGaugeSet' defined in file [/opt/shibboleth-idp/system/conf/general-admin-system.xml]: Invocation of init method failed; nested exception is net.shibboleth.utilities.java.support.component.ComponentInitializationException: Injected service was null or not an AttributeResolver
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1630)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
    idp_1 | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    idp_1 | at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
    idp_1 | at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
    idp_1 | at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:382)
    idp_1 | at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:157)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1533)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1280)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
    idp_1 | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    idp_1 | at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
    idp_1 | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
    idp_1 | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
    idp_1 | at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
    idp_1 | at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
    idp_1 | at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
    idp_1 | at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:843)
    idp_1 | at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:533)
    idp_1 | at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:816)
    idp_1 | at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:345)
    idp_1 | at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1406)
    idp_1 | at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1368)
    idp_1 | at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:778)
    idp_1 | at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:262)
    idp_1 | at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:522)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:41)
    idp_1 | at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:188)
    idp_1 | at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:499)
    idp_1 | at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:147)
    idp_1 | at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:180)
    idp_1 | at org.eclipse.jetty.deploy.providers.WebAppProvider.fileAdded(WebAppProvider.java:458)
    idp_1 | at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:64)
    idp_1 | at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:610)
    idp_1 | at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:529)
    idp_1 | at org.eclipse.jetty.util.Scanner.scan(Scanner.java:392)
    idp_1 | at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:313)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:150)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:561)
    idp_1 | at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:236)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
    idp_1 | at org.eclipse.jetty.server.Server.start(Server.java:427)
    idp_1 | at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
    idp_1 | at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
    idp_1 | at org.eclipse.jetty.server.Server.doStart(Server.java:394)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1540)
    idp_1 | at java.security.AccessController.doPrivileged(Native Method)
    idp_1 | at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1462)
    idp_1 | Caused by:
    idp_1 | net.shibboleth.utilities.java.support.component.ComponentInitializationException: Injected service was null or not an AttributeResolver
    idp_1 | at net.shibboleth.idp.attribute.resolver.impl.AttributeResolverServiceGaugeSet.doInitialize(AttributeResolverServiceGaugeSet.java:104)
    idp_1 | at net.shibboleth.utilities.java.support.component.AbstractInitializableComponent.initialize(AbstractInitializableComponent.java:61)
    idp_1 | at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
    idp_1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    idp_1 | at java.lang.reflect.Method.invoke(Method.java:498)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1759)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1696)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
    idp_1 | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    idp_1 | at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
    idp_1 | at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
    idp_1 | at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:382)
    idp_1 | at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:157)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1533)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1280)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
    idp_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
    idp_1 | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
    idp_1 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    idp_1 | at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
    idp_1 | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
    idp_1 | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
    idp_1 | at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
    idp_1 | at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
    idp_1 | at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
    idp_1 | at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:843)
    idp_1 | at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:533)
    idp_1 | at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:816)
    idp_1 | at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:345)
    idp_1 | at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1406)
    idp_1 | at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1368)
    idp_1 | at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:778)
    idp_1 | at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:262)
    idp_1 | at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:522)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:41)
    idp_1 | at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:188)
    idp_1 | at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:499)
    idp_1 | at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:147)
    idp_1 | at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:180)
    idp_1 | at org.eclipse.jetty.deploy.providers.WebAppProvider.fileAdded(WebAppProvider.java:458)
    idp_1 | at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:64)
    idp_1 | at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:610)
    idp_1 | at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:529)
    idp_1 | at org.eclipse.jetty.util.Scanner.scan(Scanner.java:392)
    idp_1 | at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:313)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:150)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:561)
    idp_1 | at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:236)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
    idp_1 | at org.eclipse.jetty.server.Server.start(Server.java:427)
    idp_1 | at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
    idp_1 | at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
    idp_1 | at org.eclipse.jetty.server.Server.doStart(Server.java:394)
    idp_1 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    idp_1 | at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1540)
    idp_1 | at java.security.AccessController.doPrivileged(Native Method)
    idp_1 | at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1462)
    idp_1 | 2018-08-02 14:07:20.952:INFO:oejus.SslContextFactory:main: x509=X509@750a04ec(idptestbed,h=[idptestbed],w=[]) for DelegateToApplicationSslContextFactory@49e2b3c5(file:///run/secrets/idp_backchannel,null)
    idp_1 | 2018-08-02 14:07:21.045:INFO:oejs.AbstractConnector:main: Started ServerConnector@7b1d87d4{SSL,[ssl, http/1.1]}{0.0.0.0:8443}
    idp_1 | 2018-08-02 14:07:21.045:INFO:oejs.AbstractConnector:main: Started ServerConnector@43ac0a68{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
    idp_1 | 2018-08-02 14:07:21.053:INFO:oejus.SslContextFactory:main: x509=X509@1dad01fe(myalias,h=[idp.ccc.local],w=[]) for SslContextFactory@3728a578(file:///run/secrets/idp_browser,null)
    idp_1 | 2018-08-02 14:07:21.056:INFO:oejs.AbstractConnector:main: Started ServerConnector@e433aef{SSL,[ssl, http/1.1]}{0.0.0.0:4443}
    idp_1 | 2018-08-02 14:07:21.057:INFO:oejs.Server:main: Started @8242ms
    sp_1 | Starting shibd: [ OK ]
    sp_1 | httpd-error [Wed Aug 01 12:45:48.439677 2018] [suexec:notice] [pid 1:tid AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
    sp_1 | httpd-ssl-error [Wed Aug 01 12:45:48.442545 2018] [ssl:warn] [pid 1:tid AH01909: RSA certificate configured for idptestbed:443 does NOT include an ID which matches the server name
    sp_1 | httpd-error [Wed Aug 01 12:45:48.442806 2018] [ssl:warn] [pid 1:tid AH01916: Init: (idptestbed:443) You configured HTTP(80) on the standard HTTPS(443) port!
    sp_1 | httpd-error [Wed Aug 01 12:45:48.479003 2018] [auth_digest:notice] [pid 1:tid AH01757: generating secret for digest authentication ...
    sp_1 | httpd-error [Wed Aug 01 12:45:48.479623 2018] [lbmethod_heartbeat:notice] [pid 1:tid AH02282: No slotmem from mod_heartmonitor
    sp_1 | httpd-ssl-error [Wed Aug 01 12:45:48.480346 2018] [ssl:warn] [pid 1:tid AH01909: RSA certificate configured for idptestbed:443 does NOT include an ID which matches the server name
    sp_1 | httpd-error [Wed Aug 01 12:45:48.480419 2018] [ssl:warn] [pid 1:tid AH01916: Init: (idptestbed:443) You configured HTTP(80) on the standard HTTPS(443) port!
    sp_1 | httpd-error [Wed Aug 01 12:45:48.499632 2018] [mpm_prefork:notice] [pid 1:tid AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16 configured -- resuming normal operations
    sp_1 | httpd-error [Wed Aug 01 12:45:48.499688 2018] [core:notice] [pid 1:tid AH00094: Command line: 'httpd -D FOREGROUND'
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:45:48 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | httpd-error [Wed Aug 01 12:54:25.773190 2018] [mpm_prefork:notice] [pid 1:tid AH00169: caught SIGTERM, shutting down
    sp_1 | Starting shibd: [ OK ]
    sp_1 | httpd-error [Wed Aug 01 12:54:51.371704 2018] [suexec:notice] [pid 1:tid AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
    sp_1 | httpd-ssl-error [Wed Aug 01 12:54:51.372112 2018] [ssl:warn] [pid 1:tid AH01909: RSA certificate configured for idptestbed:443 does NOT include an ID which matches the server name
    sp_1 | httpd-error [Wed Aug 01 12:54:51.372240 2018] [ssl:warn] [pid 1:tid AH01916: Init: (idptestbed:443) You configured HTTP(80) on the standard HTTPS(443) port!
    sp_1 | httpd-error [Wed Aug 01 12:54:51.398494 2018] [auth_digest:notice] [pid 1:tid AH01757: generating secret for digest authentication ...
    sp_1 | httpd-error [Wed Aug 01 12:54:51.400657 2018] [lbmethod_heartbeat:notice] [pid 1:tid AH02282: No slotmem from mod_heartmonitor
    sp_1 | httpd-ssl-error [Wed Aug 01 12:54:51.401460 2018] [ssl:warn] [pid 1:tid AH01909: RSA certificate configured for idptestbed:443 does NOT include an ID which matches the server name
    sp_1 | httpd-error [Wed Aug 01 12:54:51.401668 2018] [ssl:warn] [pid 1:tid AH01916: Init: (idptestbed:443) You configured HTTP(80) on the standard HTTPS(443) port!
    sp_1 | httpd-error [Wed Aug 01 12:54:51.421827 2018] [mpm_prefork:notice] [pid 1:tid AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16 configured -- resuming normal operations
    sp_1 | httpd-error [Wed Aug 01 12:54:51.421959 2018] [core:notice] [pid 1:tid AH00094: Command line: 'httpd -D FOREGROUND'
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 12:54:51 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | httpd-error [Wed Aug 01 13:16:22.999878 2018] [mpm_prefork:notice] [pid 1:tid AH00169: caught SIGTERM, shutting down
    sp_1 | Starting shibd: [ OK ]
    sp_1 | httpd-error [Wed Aug 01 14:55:15.805309 2018] [suexec:notice] [pid 1:tid AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
    sp_1 | httpd-ssl-error [Wed Aug 01 14:55:15.806313 2018] [ssl:warn] [pid 1:tid AH01909: RSA certificate configured for idptestbed:443 does NOT include an ID which matches the server name
    sp_1 | httpd-error [Wed Aug 01 14:55:15.806505 2018] [ssl:warn] [pid 1:tid AH01916: Init: (idptestbed:443) You configured HTTP(80) on the standard HTTPS(443) port!
    sp_1 | httpd-error [Wed Aug 01 14:55:15.844392 2018] [auth_digest:notice] [pid 1:tid AH01757: generating secret for digest authentication ...
    sp_1 | httpd-error [Wed Aug 01 14:55:15.844949 2018] [lbmethod_heartbeat:notice] [pid 1:tid AH02282: No slotmem from mod_heartmonitor
    sp_1 | httpd-ssl-error [Wed Aug 01 14:55:15.845445 2018] [ssl:warn] [pid 1:tid AH01909: RSA certificate configured for idptestbed:443 does NOT include an ID which matches the server name
    sp_1 | httpd-error [Wed Aug 01 14:55:15.845522 2018] [ssl:warn] [pid 1:tid AH01916: Init: (idptestbed:443) You configured HTTP(80) on the standard HTTPS(443) port!
    sp_1 | httpd-error [Wed Aug 01 14:55:15.858048 2018] [mpm_prefork:notice] [pid 1:tid AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16 configured -- resuming normal operations
    sp_1 | httpd-error [Wed Aug 01 14:55:15.858074 2018] [core:notice] [pid 1:tid AH00094: Command line: 'httpd -D FOREGROUND'
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.Config : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.RequestMapper : DEPRECATED: legacy 2.0 configuration, support will be removed from a future version of the software
    sp_1 | sp-native 2018-08-01 14:55:16 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    sp_1 | Starting shibd: [ OK ]
    sp_1 | httpd-error [Thu Aug 02 14:07:11.792174 2018] [suexec:notice] [pid 1:tid AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
    sp_1 | httpd-ssl-error [Thu Aug 02 14:07:11.793217 2018] [ssl:warn] [pid 1:tid AH01909: RSA certificate configured for idptestbed:443 does NOT include an ID which matches the server name
    sp_1 | httpd-error [Thu Aug 02 14:07:11.793357 2018] [ssl:warn] [pid 1:tid AH01916: Init: (idptestbed:443) You configured HTTP(80) on the standard HTTPS(443) port!
    sp_1 | httpd-error [Thu Aug 02 14:07:11.818261 2018] [auth_digest:notice] [pid 1:tid AH01757: generating secret for digest authentication ...
    sp_1 | httpd-error [Thu Aug 02 14:07:11.818300 2018] [auth_digest:error] [pid 1:tid (17)File exists: AH01762: Failed to create shared memory segment on file /run/httpd/authdigest_shm.1
    sp_1 | httpd-error [Thu Aug 02 14:07:11.818307 2018] [auth_digest:error] [pid 1:tid (17)File exists: AH01760: failed to initialize shm
  • all nonce-count checking, one-time nonces, and MD5-sess algorithm disabled
    sp_1 | [Thu Aug 02 14:07:11.818310 2018] [:emerg] [pid 1] AH00020: Configuration Failed, exiting
    sp_1 | Starting shibd: [ OK ]
    sp_1 | httpd-error [Thu Aug 02 14:11:53.279145 2018] [suexec:notice] [pid 1:tid AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
    sp_1 | httpd-ssl-error [Thu Aug 02 14:11:53.281467 2018] [ssl:warn] [pid 1:tid AH01909: RSA certificate configured for idptestbed:443 does NOT include an ID which matches the server name
    sp_1 | httpd-error [Thu Aug 02 14:11:53.283287 2018] [ssl:warn] [pid 1:tid AH01916: Init: (idptestbed:443) You configured HTTP(80) on the standard HTTPS(443) port!
    sp_1 | httpd-error [Thu Aug 02 14:11:53.304386 2018] [auth_digest:notice] [pid 1:tid AH01757: generating secret for digest authentication ...
    sp_1 | httpd-error [Thu Aug 02 14:11:53.304416 2018] [auth_digest:error] [pid 1:tid (17)File exists: AH01762: Failed to create shared memory segment on file /run/httpd/authdigest_shm.1
    sp_1 | httpd-error [Thu Aug 02 14:11:53.304421 2018] [auth_digest:error] [pid 1:tid (17)File exists: AH01760: failed to initialize shm
  • all nonce-count checking, one-time nonces, and MD5-sess algorithm disabled
    sp_1 | [Thu Aug 02 14:11:53.304423 2018] [:emerg] [pid 1] AH00020: Configuration Failed, exiting
    dockerized-idp-testbed_sp_1 exited with code 1

How to log out?

Is there an easier way to logout than destroying the browser state?

Great piece of code, thanks!

:latest build trying to run on Docker for Windows

the current build fails with following error
No package php55w-ldap available.
Error: Nothing to do
ERROR: Service 'simplesamlphp' failed to build: The command '/bin/sh -c yum -y install php55w-ldap' returned a non-zero code: 1

So upon trying to install manually following message returneded
Package php55w-ldap-5.5.38-1.w7.x86_64 is obsoleted by php-ldap-7.2.13-2.el7.remi.x86_64 which is already installed

HTTP Artifact Binding not working

When i tried to force the IdP to use HTTP-Artifact on the SAML Response, the SP was unable to resolve the artifact. Diff to c57dc79c7c3b171a3d115920bfecdcb3a9e22371:

diff --git a/sp/etc-shibboleth/shibboleth2.xml b/sp/etc-shibboleth/shibboleth2.xml
index 79705fb..e72e313 100644
--- a/sp/etc-shibboleth/shibboleth2.xml
+++ b/sp/etc-shibboleth/shibboleth2.xml
@@ -41,13 +41,15 @@
             (Set discoveryProtocol to "WAYF" for legacy Shibboleth WAYF support.)
             You can also override entityID on /Login query string, or in RequestMap/htaccess.
             -->
-            <SSO entityID="https://idptestbed/idp/shibboleth">
+            <!--SSO entityID="https://idptestbed/idp/shibboleth">
               SAML2 SAML1
-            </SSO>
+            </SSO-->
 
             <!-- SAML and local-only logout. -->
             <Logout>SAML2 Local</Logout>
             
+            <SessionInitiator entityID="https://idptestbed/idp/shibboleth" signing="false" encryption="false" Location="https://idptestbed/Shibboleth.sso/Login" type="SAML2" acsIndex="3" isDefault="true" />
+            <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" Location="/SAML2/Artifact" index="3"/>
             <!-- Extension service that generates "approximate" metadata based on SP configuration. -->
             <Handler type="MetadataGenerator" Location="/Metadata" signing="false"/>

DNS lookup failure for: sp ?

Is a DNS entry for 'sp' necessary ?

After running 'docker-compose up', browsing to https://idptestbed/ and clicking on the link, I see :

Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /php-shib-protected/.
Reason: DNS lookup failure for: sp

Requirements

Does this testbed require shibboleth-sp-dockerized and shibboleth-id-dockerized to be downloaded and installed before usage or is it self containing?

Can't contact LDAP server

After following instructions i've got this output:
https://gist.github.com/errst/43bbb3179ed29d00e30c88d9deb71e53

Specific detail:
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
ERROR: Service 'ldap' failed to build: The command '/bin/sh -c useradd ldapadmin && rm -fr /var/lock /usr/lib/systemd/system && sed -i 's/checkHostname {/checkHostname {\nreturn();/g' /usr/lib64/dirsrv/perl/DSUtil.pm && sed -i 's/updateSelinuxPolicy($inf);//g' /usr/lib64/dirsrv/perl/* && sed -i '/if (@errs = startServer($inf))/,/}/d' /usr/lib64/dirsrv/perl/* && setup-ds.pl --silent --file /ds-setup.inf && /usr/sbin/ns-slapd -D /etc/dirsrv/slapd-dir && sleep 3 && ldapadd -H ldap:/// -f /users.ldif -x -D "cn=Directory Manager" -w password' returned a non-zero code: 255

How can i achieve this issue? Thanks.

error on building services

I just tried docker compose up.

 => CACHED [stage-1 3/8] COPY --from=stage /apereo/phpCAS/utils/dist/CAS-1.3.4.tgz /                                                                                                                                                                                                                               0.0s
 => ERROR [stage-1 4/8] RUN pear install CAS-1.3.4.tgz  && rm /CAS-1.3.4.tgz                                                                                                                                                                                                                                       0.9s
------
 > [stage-1 4/8] RUN pear install CAS-1.3.4.tgz  && rm /CAS-1.3.4.tgz:
#10 0.834 could not extract the package.xml file from "CAS-1.3.4.tgz"
#10 0.834 install failed
------
failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c pear install CAS-1.3.4.tgz  && rm /CAS-1.3.4.tgz]: exit code: 1

Searching the error reveiled, that somewhere Centos7 with phpCAS-1.3.4.
phpCas is currently at version 1.4 and this might requrie an update.

shibsp::ListenerException on linux

Hi @jtgasper3 ,
Thank You for creating the dockerized idp and sp.
While using this testbed, I found that none of the apps are working. When I open https://idptestbed it shows the 3 apps which we can test but each one of them is giving an error.
PHP App Protected by Shibboleth SP -> shibsp::ListenerException
PHP App Protected by CAS hosted on Shibboleth IdP -> Service Unavailable
PHP App Protected by SimpleSAMLphp:

  • Shibboleth IdP -> Service Unavailable
  • SimpleSAMLphp IdP -> Unhandled Exception

Could you please help me out here as I am a newbie to Shibboleth.
Thank You

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.