A minimalist Debian-based Shibboleth IdP image, intended to be a solid foundation for other images
10K+
Shibboleth Identity Provider is a mature, SAML-based single sign on (SSO) web application widely deployed in academic organisations. It's used by millions of staff and students around the world.
Ishigaki is a minimalist, Debian-based, Shibboleth IdP Docker image. It is maintained by Digital Identity Ltd. Ishigaki is intended to be a solid foundation for other images but can also be used directly by mounting volumes for configuration directories.
The latest Ishigaki is based around Shibboleth IdP v4.1.0 and has support for installing plugins and managing modules.
This image is not a ready-to-use, stand-alone IdP service - it's meant to be configured and then used in conjunction with other services to handle TLS, databases, LDAP, and so on. It's especially well suited to use with Docker Compose or Swarm, Nomad or Kubernetes. Ishigaki aims to be a good Docker image with careful use of layers, correct signal handling, a non-root process, logging to STDOUT by default and a healthcheck.
Images are available from Dockerhub and Github:
Three versions are available:
docker pull digitalidentity/ishigaki:latest to get the latest default version from DockerHubdocker pull ghcr.io/digital-identity-labs/ishigaki:latest-plus" to get the latest plus version from Githubdocker pull ghcr.io/digital-identity-labs/ishigaki:2.0.0-base" to get a specific base version from GithubRun the unconfigured default IDP in the foreground, with a http port available:
docker run -it -p 8080:8080 digitalidentity/ishigaki
Copy the current configuration from the running container:
containerid=$(docker ps | grep ishigaki | awk '{print $1}')
docker cp $containerid:/opt ./optfs
docker stop $containerid
Most of the useful configuration for Ishigaki is in various /opt directories:
admin - this contains some internal tools.jetty - the global Jetty configuration.jetty-shib - extra Jetty configuration files for running Shibbolethmisc - a few other filesshibboleth-idp - the Shibboleth IDP configurationAdjust these files to suit your use-case - see the Shibboleth IdP documentation for lots more information.
As you're probably copying these files over the top of existing files, you don't need to keep copies of files you aren't changing. You can usually not bother with the admin, jetty and misc directories. You will probably only need to change the jetty-shib directory if you are adding TLS or backchannel ports directly to the IdP, rather than using a proxy.
Then you can either build an image that contains your configuration, like this:
FROM ghcr.io/digital-identity-labs/ishigaki:latest-base
# (Don't use latest in production)
LABEL description="An example IdP image based on Ishigaki" \
version="0.0.1" \
maintainer="[email protected]"
ARG PLUGINS="https://shibboleth.net/downloads/identity-provider/plugins/oidc-common/1.0.0/oidc-common-dist-1.0.0.tar.gz \
https://shibboleth.net/downloads/identity-provider/plugins/oidc-op/3.0.0/idp-plugin-oidc-op-distribution-3.0.0.tar.gz"
ARG MODULES="idp.oidc.OP"
## The prepare_apps.sh script can use these - but they're not needed otherwise
ENV IDP_HOSTNAME=idp.example.com \
IDP_SCOPE=example.com \
IDP_ID=https://idp.example.com/idp/shibboleth
RUN for plugin in $PLUGINS; do $IDP_HOME/bin/plugin.sh -i $plugin ; done && \
$IDP_HOME/bin/module.sh -i $MODULES ; $IDP_HOME/bin/module.sh -e $MODULES
## Copy your configuration files over into the image
COPY optfs /opt
or run the Ishigaki image with mounted directories
docker run -v /home/bjensen/myshib/optfs/shibboleth-idp:/opt/shibboleth-idp digitalidentity/ishigaki
Running a relatively bare Ishigaki container on its own is only useful for some basic dev or testing work. It's far more useful when used with other Docker containers.
For example, a docker-compose.yml file like this can provide a basic IdP service, with TLS and LDAP:
version: '3'
services:
frontend:
image: traefik:latest
command: --web --docker --docker.domain=docker.localhost --logLevel=DEBUG
ports:
- "443:443"
- "8080:8080"
- "8433:8443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./frontend/traefik.toml:/traefik.toml
- ./frontend/certs:/certs
ldap:
image: digitalidentity/eduldap:latest
labels:
- "traefik.enable=false"
idp:
image: digitalidentity/ishigaki:latest
volumes:
- ./idp/shibboleth-idp:/opt/shibboleth-idp
labels:
- "traefik.backend=idp"
- "traefik.frontend.passHostHeader=true"
- "traefik.frontend.rule=Host:idp.localhost.demo.university"
- "traefik.frontend.entryPoints=https"
- "traefik.port=8080"
- "traefik.protocol=http"
(This is not going to work on its own - you'll need to use your own data, Traefik configuration, LDAP data, etc)
Possibly useful things to know:
The defaults for these settings can be changed by using --build-arg THE_ARG="new setting" with docker build
Unlike most IdP images Ishigaki assumes it is behind a reverse proxy such as Apache HTTPD or Traefik. The default configuration accepts and trusts some HTTP headers that it assumes carry information from the proxy.
If you add TLS, backchannel ports, etc and run Ishigaki directly, without a proxy, please remove the configuration options for these headers, or they may be a security risk for your service.
Ishigaki Academic Edition is a commercial, supported version of Ishigaki produced and supported by Mimoto Ltd. It can be used in exactly the same way, but has a few differences:
If you'd like more information about Ishigaki Academic Edition, please contact Mimoto
Ishigaki are the impressive dry stone foundation walls of Japanese castles. (Ishigaki is also the name of a beautiful island and city in Okinawa)
You can request new features by creating an issue, or submit a pull request with your contribution.
The Ishigaki repo contains tests that you can use in your own projects. We're extra grateful for any contributions that include tests.
If you have a support contract with Mimoto, please contact Mimoto for assistance, rather than use Github.
Copyright (c) 2017,2021 Digital Identity Ltd, UK
Licensed under the MIT License
Content type
Image
Digest
sha256:f08017be6…
Size
280.8 MB
Last updated
almost 3 years ago
docker pull digitalidentity/ishigaki