diff --git a/testbed/authentication/shibboleth-idp/Dockerfile b/testbed/authentication/shibboleth-idp/Dockerfile index 2b10847f0..ed663d8b5 100644 --- a/testbed/authentication/shibboleth-idp/Dockerfile +++ b/testbed/authentication/shibboleth-idp/Dockerfile @@ -1,4 +1,4 @@ -FROM tier/shib-idp:4.0.0_20200518 +FROM i2incommon/shib-idp:4.2.1_20220624 # The build args below can be used at build-time to tell the build process where to find your config files. This is for a completely burned-in config. ARG TOMCFG=config/tomcat diff --git a/testbed/authentication/shibboleth-idp/config/shib-idp/conf/relying-party.xml b/testbed/authentication/shibboleth-idp/config/shib-idp/conf/relying-party.xml index 5127515ed..f216e2f5e 100644 --- a/testbed/authentication/shibboleth-idp/config/shib-idp/conf/relying-party.xml +++ b/testbed/authentication/shibboleth-idp/config/shib-idp/conf/relying-party.xml @@ -40,7 +40,7 @@ --> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testbed/integration/shibboleth-idp/config/shib-idp/conf/global.xml b/testbed/integration/shibboleth-idp/config/shib-idp/conf/global.xml new file mode 100644 index 000000000..ce4d699e6 --- /dev/null +++ b/testbed/integration/shibboleth-idp/config/shib-idp/conf/global.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testbed/integration/shibboleth-idp/config/shib-idp/conf/idp.properties b/testbed/integration/shibboleth-idp/config/shib-idp/conf/idp.properties index 50af60005..b356a4574 100644 --- a/testbed/integration/shibboleth-idp/config/shib-idp/conf/idp.properties +++ b/testbed/integration/shibboleth-idp/config/shib-idp/conf/idp.properties @@ -1,5 +1,5 @@ # Load any additional property resources from a comma-delimited list -idp.additionalProperties=/conf/ldap.properties, /conf/saml-nameid.properties, /conf/services.properties, /conf/authn/duo.properties, /credentials/secrets.properties +idp.additionalProperties=/conf/ldap.properties, /conf/saml-nameid.properties, /conf/services.properties, /conf/authn/duo.properties, /credentials/secrets.properties, /conf/oidc.properties # In most cases (and unless noted in the surrounding comments) the # commented settings in the distributed files document default behavior. @@ -224,3 +224,5 @@ idp.ui.fallbackLanguages=en,fr,de # Set false if you want SAML bindings "spelled out" in audit log idp.audit.shortenBindings=true + +#idp.loglevel.idp=DEBUG diff --git a/testbed/integration/shibboleth-idp/config/shib-idp/conf/oidc-attribute-filter.xml b/testbed/integration/shibboleth-idp/config/shib-idp/conf/oidc-attribute-filter.xml new file mode 100644 index 000000000..e1c7e4aed --- /dev/null +++ b/testbed/integration/shibboleth-idp/config/shib-idp/conf/oidc-attribute-filter.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testbed/integration/shibboleth-idp/config/shib-idp/conf/oidc-attribute-resolver.xml b/testbed/integration/shibboleth-idp/config/shib-idp/conf/oidc-attribute-resolver.xml new file mode 100644 index 000000000..bab9f96ae --- /dev/null +++ b/testbed/integration/shibboleth-idp/config/shib-idp/conf/oidc-attribute-resolver.xml @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + member + staff + + + +1 (604) 555-1234;ext=5678 + + + true + + + false + + + Mr.Teppo Matias Testaaja + + + Testaaja + + + Teppo Matias + + + Matias + + + TT + + + https://fi.wikipedia.org/wiki/Tom_Cruise + + + https://pixabay.com/fi/pentu-kissa-kukka-potin-tabby-pentu-2766820/ + + + https://www.facebook.com/officialtomcruise/ + + + male + + + 1969-07-20 + + + America/Los_Angeles + + + en-US + + + 1509450347 + + + 234 Hollywood Blvd. + + + Los Angeles + + + CA + + + 90210 + + + US + + + + diff --git a/testbed/integration/shibboleth-idp/config/shib-idp/conf/oidc-clientinfo-resolvers.xml b/testbed/integration/shibboleth-idp/config/shib-idp/conf/oidc-clientinfo-resolvers.xml new file mode 100644 index 000000000..35cc7d853 --- /dev/null +++ b/testbed/integration/shibboleth-idp/config/shib-idp/conf/oidc-clientinfo-resolvers.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/testbed/integration/shibboleth-idp/config/shib-idp/conf/oidc.properties b/testbed/integration/shibboleth-idp/config/shib-idp/conf/oidc.properties new file mode 100644 index 000000000..09d6ebd60 --- /dev/null +++ b/testbed/integration/shibboleth-idp/config/shib-idp/conf/oidc.properties @@ -0,0 +1,146 @@ +# Set the Open ID Connect Issuer value +idp.oidc.issuer = https://idp.unicon.local + +#Dynamic registration properties +idp.oidc.dynreg.StorageService=shibboleth.JPAStorageService + +# The validity of registration before a new one is required. +#idp.oidc.dynreg.defaultRegistrationValidity = PT24H +# The validity of client secret registered +#idp.oidc.dynreg.defaultSecretExpiration = P12M +# The default scopes accepted in dynamic registration +#idp.oidc.dynreg.defaultScope = openid profile email address phone offline_access +# The default subject type if not set by client in request. Maybe set to pairwise or public. +#idp.oidc.dynreg.defaultSubjectType = public +# The acceptable client authentication methods when using dynamic registration +#idp.oidc.dynreg.tokenEndpointAuthMethods = client_secret_basic,client_secret_post,client_secret_jwt,private_key_jwt +# Regardless of what signing algorithms are configured, allow none for request object signing +#idp.oidc.dynreg.allowNoneForRequestSigning = true +# Bean to determine whether dynamic registration should validate the remote JWK set if it's defined in the request +#idp.oidc.dynreg.validateRemoteJwks = shibboleth.Conditions.TRUE +# Full path to the file containing default metadata policy used for dynamic client registration +#idp.oidc.dynreg.defaultMetadataPolicyFile = +# Bean to determine the default metadata policy used for dynamic client registration +#idp.oidc.dynreg.defaultMetadataPolicy = shibboleth.oidc.dynreg.DefaultMetadataPolicy + +# Storage for storing remote jwk sets. +#idp.oidc.jwk.StorageService = shibboleth.StorageService + +#Authorization/Token endpoint properties +# The acceptable client authentication methods +#idp.oidc.tokenEndpointAuthMethods = client_secret_basic,client_secret_post,client_secret_jwt,private_key_jwt + +# Default lifetime of OIDC tokens (issued to the client or against the OP itself) +#idp.oidc.authorizeCode.defaultLifetime = PT5M +#idp.oidc.accessToken.defaultLifetime = PT10M +#idp.oidc.refreshToken.defaultLifetime = PT2H +#idp.oidc.idToken.defaultLifetime = PT1H + +# Lifetime of entries in revocation cache for authorize code +#idp.oidc.revocationCache.authorizeCode.lifetime = PT6H +# Storage for revocation cache. Requires server-side storage +#idp.oidc.revocationCache.StorageService = shibboleth.StorageService + +# Signing keys for id tokens / userinfo response +idp.signing.oidc.rs.key = %{idp.home}/credentials/idp-signing-rs.jwk +idp.signing.oidc.es.key = %{idp.home}/credentials/idp-signing-es.jwk +# Request object decryption key +idp.signing.oidc.rsa.enc.key = %{idp.home}/credentials/idp-encryption-rsa.jwk + +# Set false to preclude issuing unencrypted ID/UserInfo tokens without specific overrides +#idp.oidc.encryptionOptional = true + +#PKCE/AppAuth related properties +#idp.oidc.forcePKCE = false +#idp.oidc.allowPKCEPlain = false + +# Store user consent to authorization code & access/refresh tokens instead of exploiting consent storage +#idp.oidc.encodeConsentInTokens = false + +# shibboleth.ClientInformationResolverService properties +#idp.service.clientinfo.failFast = false +#idp.service.clientinfo.checkInterval = PT0S +#idp.service.clientinfo.resources = shibboleth.ClientInformationResolverResources + +# Special claim handling rules +# "Encoded" attributes are encrypted and embedded into the access token +#idp.oidc.encodedAttributes = +# "Always included" attributes are forced into ID tokens for all response_types +#idp.oidc.alwaysIncludedAttributes = +# "Denied" attributes are omitted from the UserInfo token +#idp.oidc.deniedUserInfoAttributes = + +# The source attribute used in generating the sub claim +idp.oidc.subject.sourceAttribute = uid + +# The digest algorithm used in generating the sub claim +#idp.oidc.subject.algorithm = SHA + +# The salt used in generating the subject +# Do *NOT* share the salt with other people, it's like divulging your private key. +# It is suggested you move this property into credentials/secrets.properties +idp.oidc.subject.salt = eezien3iteit0gaiciiweayohxahmai6 + +# Bean to determine whether SAML metadata should be exploited for trusted OIDC RP resolution +#idp.oidc.metadata.saml = shibboleth.Conditions.TRUE + +# Upgrade interval to the remote JWKs +#idp.oidc.jwksuri.fetchInterval = PT30M + +# Bounds on the next file refresh of the OP configuration resource +#idp.oidc.config.minRefreshDelay = PT5M +#idp.oidc.config.maxRefreshDelay = PT4H + +# Bean to configure additional response headers: none is added by default, but e.g. shibboleth.ResponseHeaderFilter +# contains headers further configurable via other properties such as 'idp.hsts', 'idp.frameoptions' and 'idp.csp'. +#idp.oidc.ResponseHeaderFilter = shibboleth.ResponseHeaderFilter + +# Bean used for extracting login_hint from the authentication request. The default function parses login_hint as is. +#idp.oidc.LoginHintLookupStrategy = DefaultRequestLoginHintLookupFunction + +# Bean used for creating SPSessions needed for SLO. By default builds protocol-independent BasicSPSession, as SLO is not yet supported. +#idp.oidc.SPSessionCreationStrategy = DefaultSPSessionCreationStrategy + +# Settings for issue-registration-access-token flow +#idp.oidc.admin.registration.logging = IssueRegistrationAccessToken +idp.oidc.admin.registration.nonBrowserSupported = true +idp.oidc.admin.registration.authenticated = true +#idp.oidc.admin.registration.resolveAttributes = false +#idp.oidc.admin.registration.lookup.policy = shibboleth.oidc.admin.DefaultMetadataPolicyLookupStrategy +#idp.oidc.admin.registration.defaultTokenLifetime = P1D +idp.oidc.admin.registration.accessPolicy = AccessByAdminUser +#idp.oidc.admin.registration.policyLocationPolicy = AccessByAdmin +idp.oidc.admin.registration.policyIdPolicy = AccessByAdminUser +#idp.oidc.admin.registration.clientIdPolicy = AccessByAdmin + +idp.oidc.admin.clients.authenticated = true +idp.oidc.admin.clients.accessPolicy = AccessByAdminUser + +# +# OAuth2 Settings - these typically involve generic OAuth 2.0 use cases +# + +# Supported grant_type values for token requests +#idp.oauth2.grantTypes = authorization_code,refresh_token + +# Default handling of generic OAuth tokens (for use against arbitrary resource servers) +#idp.oauth2.accessToken.defaultLifetime = PT10M +# Set to JWT if desired as a default. +#idp.oauth2.accessToken.type = + +# Set false to preclude issuing unencrypted JWT access tokens without specific overrides +#idp.oauth2.encryptionOptional = true + +# Default scope/audience values if you allow unverified clients without metadata. +#idp.oauth2.defaultAllowedScope = +#idp.oauth2.defaultAllowedAudience = + +# Regular expression matching OAuth login flows to enable. +# For most deployments, the default is sufficient to accomodate a variety of methods +#idp.oauth2.authn.flows = OAuth2Client + +# Set true to enforce refresh token rotation (defaults to false) +#idp.oauth2.enforceRefreshTokenRotation = true + +# Revocation method: set to TOKEN to revoke single tokens (defaults to full chain (value = CHAIN)) +#idp.oauth2.revocationMethod = TOKEN \ No newline at end of file diff --git a/testbed/integration/shibboleth-idp/config/shib-idp/conf/relying-party.xml b/testbed/integration/shibboleth-idp/config/shib-idp/conf/relying-party.xml index 478731ac5..9227a1dfe 100644 --- a/testbed/integration/shibboleth-idp/config/shib-idp/conf/relying-party.xml +++ b/testbed/integration/shibboleth-idp/config/shib-idp/conf/relying-party.xml @@ -23,6 +23,8 @@ + + @@ -51,6 +53,11 @@ + + + + + diff --git a/testbed/integration/shibboleth-idp/config/shib-idp/conf/services.xml b/testbed/integration/shibboleth-idp/config/shib-idp/conf/services.xml index c38ff2aa3..93d102727 100644 --- a/testbed/integration/shibboleth-idp/config/shib-idp/conf/services.xml +++ b/testbed/integration/shibboleth-idp/config/shib-idp/conf/services.xml @@ -26,6 +26,7 @@ %{idp.home}/conf/attribute-resolver.xml + %{idp.home}/conf/oidc-attribute-resolver.xml + + + + +