Some of our ReSeeD instances use Shibboleth for login. This has the following requirements:
entityID
of our ReSeeD instance (SAML_SP_ID
in the .env
file)SAML_SP_CERTIFICATE
in the .env
file)https://reseed.example.net/users/auth/saml/metadata
)urn:oasis:names:tc:SAML:attribute:pairwise-id
urn:mace:dir:attribute-def:displayName
/ urn:oid:2.16.840.1.113730.3.1.241
urn:mace:dir:attribute-def:mail
/ urn:oid:0.9.2342.19200300.100.1.3
urn:mace:dir:attribute-def:eduPersonAffiliation
/ urn:oid:1.3.6.1.4.1.5923.1.1.1.1
.env
file must have been configured:
APPLICATION_URL="https://reseed.example.net"
USE_SAML=true
SAML_SP_ID=${APPLICATION_URL}
SAML_IDP_SERVICE_URL="https://idp.example.net/idp/shibboleth"
SAML_IDP_SSO_SERVICE_URL="https://idp.example.net/idp/profile/SAML2/Redirect/SSO"
SAML_IDP_CERT="-----BEGIN CERTIFICATE-----ONLY_IDP_LEAF_CERT_WITHOUT_CHAIN_FROM_SAML_IDP_SSO_SERVICE_URL_AND_MUST_NOT_CONTAIN_LINE_BREAKS-----END CERTIFICATE-----"
SAML_SP_CERTIFICATE="-----BEGIN CERTIFICATE-----ONLY_LEAF_CERT_WITHOUT_CHAIN_AND_MUST_NOT_CONTAIN_LINE_BREAKS-----END CERTIFICATE-----"
SAML_SP_CERTIFICATE_KEY="-----BEGIN PRIVATE KEY-----ONLY_PRIVATE_KEY_AND_MUST_NOT_CONTAIN_LINE_BREAKS-----END PRIVATE KEY-----"
SAML_ATTRIBUTE_UID="urn:oasis:names:tc:SAML:attribute:pairwise-id"
# "urn:mace:dir:attribute-def:displayName" = "urn:oid:2.16.840.1.113730.3.1.241"
SAML_ATTRIBUTE_NAME="urn:oid:2.16.840.1.113730.3.1.241"
# "urn:mace:dir:attribute-def:mail" = "urn:oid:0.9.2342.19200300.100.1.3"
SAML_ATTRIBUTE_EMAIL="urn:oid:0.9.2342.19200300.100.1.3"
# "urn:mace:dir:attribute-def:eduPersonAffiliation" = "urn:oid:1.3.6.1.4.1.5923.1.1.1.1"
SAML_ATTRIBUTE_ROLE="urn:oid:1.3.6.1.4.1.5923.1.1.1.1"
# If Authorization is restricted, only users with affiliation=staff are allowed access
SAML_RESTRICT_AUTHORIZATION=true
SAML_SP_CERTIFICATE
and SAML_SP_CERTIFICATE_KEY
variables and as configured on the IDP / IDP federation.In theory, we could use Let's Encrypt certificates, but because the TLS certificate must be manually configured on the IDP side, we use GEANT certificates, because those are valid for a whole year instead of only 90 days.
ReSeeD can currently only use a single certificate for Shibboleth, but the Shibboleth IDPs with which our ReSeeD instances interact support multiple certificates per SP. Therefore, when renewing the certificate, the ideal process is as follows:
.env
file and an updated nginx config to use that new certificate, but do not use/enable both updated configs just yet. Do this a few days before the old ReSeeD/SP certificate expires, because in some Shibboleth federations, it may take 24h for a new certificate to propagate throughout all member IDPs in the federation.entityID
of your ReSeeD instance (this is the SAML_SP_ID
variable from the .env
file),SAML_IDP_SERVICE_URL
variable from the .env
file)..env
file to the new certificate, because in some Shibboleth federations, it can take up to 24h until all member IDPs have fetched the current metadata (which includes the SP certificate that the ReSeeD instances uses).