Skip to content

Product documentation

Federation members configuration

Generated reference for the oauthy.* configuration bound by Federation members.

Federation members configuration

Per-provider OIDC / SAML connectors a tenant attaches (Entra ID, Okta, Google, Apple, GitHub, LDAP, ERP, SAML, ...).

oauthy.federation.adfs

Owner: federation-members/adfs · Source: servers/federation-members/adfs/src/main/kotlin/com/devnow/oauthy/federation/adfs/config/AdfsMemberProperties.kt

Tenant-side configuration for the ADFS federation member.

PropertyTypeDefaultDescription
oauthy.federation.adfs.tenant.idp-metadata-urlString""URL of the ADFS Federation Metadata document.
oauthy.federation.adfs.tenant.idp-metadata-xmlString""Inline metadata XML.
oauthy.federation.adfs.tenant.entity-idString""The SP entity ID.
oauthy.federation.adfs.tenant.assertion-consumer-service-urlString""The Thoryn ACS callback URL — where ADFS POSTs the SAML response.
oauthy.federation.adfs.tenant.want-assertions-encryptedBooleanfalseWhether ADFS encrypts the SAML assertion.
oauthy.federation.adfs.tenant.want-authn-requests-signedBooleanfalseWhether the connector signs its AuthnRequests.
oauthy.federation.adfs.clients[].client-idString"hub-client"
oauthy.federation.adfs.clients[].client-secretString"hub-secret"
oauthy.federation.adfs.clients[].redirect-uriString"http://localhost:8080/login/oauth2/code/adfs"

oauthy.federation.apple

Owner: federation-members/apple · Source: servers/federation-members/apple/src/main/kotlin/com/devnow/oauthy/federation/apple/config/AppleProperties.kt

Configuration for the Apple federation member.

PropertyTypeDefaultDescription
oauthy.federation.apple.team-idString""Apple Team ID (10-character string from Apple Developer portal).
oauthy.federation.apple.client-idString""Apple Service ID / OAuth2 client_id (e.g.
oauthy.federation.apple.vault-key-pathString"secret/thoryn/apple/p256-private-key"Vault KV path containing the PKCS#8 PEM-encoded P-256 private key.
oauthy.federation.apple.clients[].client-idString"hub-client"
oauthy.federation.apple.clients[].client-secretString"hub-secret"
oauthy.federation.apple.clients[].redirect-uriString"http://localhost:8080/login/oauth2/code/apple-member"
oauthy.federation.apple.public-base-urlString""SSO-832: public origin (scheme://host[:port]) of this Apple federation member instance.

oauthy.federation.dummy

Owner: federation-members/dummy-member · Source: servers/federation-members/dummy-member/src/main/kotlin/com/devnow/oauthy/federation/dummy/config/DummyMemberProperties.kt

PropertyTypeDefaultDescription
oauthy.federation.dummy.clients[].client-idString"hub-client"
oauthy.federation.dummy.clients[].client-secretString"hub-secret"
oauthy.federation.dummy.clients[].redirect-uriString"http://localhost:8080/login/oauth2/code/hub-client"
oauthy.federation.dummy.users[].usernameString"testuser"
oauthy.federation.dummy.users[].passwordString"testpass"

oauthy.federation.erp

Owner: federation-members/erp-connector · Source: servers/federation-members/erp-connector/src/main/kotlin/com/devnow/oauthy/federation/erp/config/ErpConnectorProperties.kt

PropertyTypeDefaultDescription
oauthy.federation.erp.issuerString"http://localhost:9004"
oauthy.federation.erp.api-keyString"erp-dev-secret"
oauthy.federation.erp.oidc.allowed-claimsList<String>(empty)
oauthy.federation.erp.oidc.demo-passwordString"erp-demo-pass"
oauthy.federation.erp.oidc.claim-key-for-loginString"employee_id"
oauthy.federation.erp.oidc.clients[].client-idString""
oauthy.federation.erp.oidc.clients[].client-secretString""
oauthy.federation.erp.oidc.clients[].redirect-uriString""
oauthy.federation.erp.connector.typeConnectorTypeConnectorType.MEMORY
oauthy.federation.erp.connector.memory.entries[].claim-keyString""
oauthy.federation.erp.connector.memory.entries[].claim-valueString""
oauthy.federation.erp.connector.memory.entries[].attributesMap<String, Any>(empty)
oauthy.federation.erp.connector.memory.entries[].validBooleantrue
oauthy.federation.erp.connector.jdbc.urlString""
oauthy.federation.erp.connector.jdbc.usernameString""
oauthy.federation.erp.connector.jdbc.passwordString""
oauthy.federation.erp.connector.jdbc.lookup-queryString"SELECT * FROM users WHERE id = :value"
oauthy.federation.erp.connector.rest.base-urlString""
oauthy.federation.erp.connector.rest.lookup-pathString"/lookup"
oauthy.federation.erp.connector.rest.methodString"POST"
oauthy.federation.erp.connector.rest.claim-paramString"id"
oauthy.federation.erp.connector.rest.auth-headerString""
oauthy.federation.erp.connector.rest.connect-timeout-msLong5000
oauthy.federation.erp.connector.rest.read-timeout-msLong10000
oauthy.federation.erp.connector.rest.response-attributes-pathsMap<String, String>(empty)
oauthy.federation.erp.connector.rest.response-active-pathString""

oauthy.federation.github

Owner: federation-members/github-member · Source: servers/federation-members/github-member/src/main/kotlin/com/devnow/oauthy/federation/github/config/GitHubMemberProperties.kt

PropertyTypeDefaultDescription
oauthy.federation.github.clients[].client-idStringrequired
oauthy.federation.github.clients[].client-secretStringrequired
oauthy.federation.github.clients[].redirect-uriStringrequired

oauthy.federation.google

Owner: federation-members/google-workspace · Source: servers/federation-members/google-workspace/src/main/kotlin/com/devnow/oauthy/federation/google/config/GoogleWorkspaceMemberProperties.kt

Configuration properties for the Google Workspace federation member.

PropertyTypeDefaultDescription
oauthy.federation.google.clients[].client-idStringrequired
oauthy.federation.google.clients[].client-secretStringrequired
oauthy.federation.google.clients[].redirect-uriStringrequired
oauthy.federation.google.tenant.client-idString""OAuth client ID minted in Google Cloud Console (APIs & Services → Credentials → OAuth client ID).
oauthy.federation.google.tenant.client-secretString""OAuth client secret paired with clientId.
oauthy.federation.google.tenant.hosted-domainString""The customer's Google Workspace domain (e.g.
oauthy.federation.google.tenant.issuer-overrideString?nullOptional override for the OIDC issuer; default is https://accounts.google.com.

oauthy.federation.ldap

Owner: federation-members/ldap-connector · Source: servers/federation-members/ldap-connector/src/main/kotlin/com/devnow/oauthy/federation/ldap/LdapConnectorProperties.kt

PropertyTypeDefaultDescription
oauthy.federation.ldap.issuerString"http://localhost:9003"
oauthy.federation.ldap.api-keyString"ldap-dev-secret"
oauthy.federation.ldap.directory.urlString"ldap://localhost:8389"
oauthy.federation.ldap.directory.base-dnString"ou=staff,dc=hospital,dc=demo"
oauthy.federation.ldap.directory.bind-dnString?null
oauthy.federation.ldap.directory.bind-passwordString?null
oauthy.federation.ldap.directory.filter-templateString"(&(uid={value}))"
oauthy.federation.ldap.directory.claim-attributeString"uid"
oauthy.federation.ldap.directory.return-attributesList<String>listOf("uid", "givenName", "sn", "employeeType", "description")
oauthy.federation.ldap.directory.attribute-mappingsMap<String, String>mapOf( "givenName" to "given_name", "sn" to "family_name", "uid" to "employee...
oauthy.federation.ldap.directory.active-attributeString?null
oauthy.federation.ldap.directory.active-valueString?null
oauthy.federation.ldap.oidc.clients[].client-idString""
oauthy.federation.ldap.oidc.clients[].client-secretString""
oauthy.federation.ldap.oidc.clients[].redirect-uriString""
oauthy.federation.ldap.oidc.demo-passwordString"demo-pass"

oauthy.federation.pingfederate

Owner: federation-members/pingfederate · Source: servers/federation-members/pingfederate/src/main/kotlin/com/devnow/oauthy/federation/pingfederate/config/PingFederateMemberProperties.kt

Configuration properties for the PingFederate federation member.

PropertyTypeDefaultDescription
oauthy.federation.pingfederate.clients[].client-idStringrequired
oauthy.federation.pingfederate.clients[].client-secretStringrequired
oauthy.federation.pingfederate.clients[].redirect-uriStringrequired
oauthy.federation.pingfederate.tenant.registration-idString"pingfederate"internal identifier used by Spring Security's SAML registration repository; defaults to "pingfederate".
oauthy.federation.pingfederate.tenant.idp-metadata-urlString""URL to fetch the PingFed IdP metadata (typical: https://pingfed.acme.com/pf/federation_metadata.ping).
oauthy.federation.pingfederate.tenant.idp-metadata-xmlString""pasted PingFed IdP metadata XML.
oauthy.federation.pingfederate.tenant.entity-idString""the Thoryn SP's entity ID (advertised in SP metadata).
oauthy.federation.pingfederate.tenant.assertion-consumer-service-urlString""the Thoryn ACS URL (where PingFed POSTs the SAML response).
oauthy.federation.pingfederate.tenant.want-assertions-encryptedBooleantruewhether the SP requires PingFed to encrypt the SAML assertion.
oauthy.federation.pingfederate.tenant.attribute-mappingMap<String, String>(empty)override map: PingFed source attribute → broker claim.

oauthy.federation.saml

Owner: federation-members/saml-member · Source: servers/federation-members/saml-member/src/main/kotlin/com/devnow/oauthy/federation/saml/config/SamlMemberProperties.kt

PropertyTypeDefaultDescription
oauthy.federation.saml.clients[].client-idString"hub-client"
oauthy.federation.saml.clients[].client-secretString"hub-secret"
oauthy.federation.saml.clients[].redirect-uriString"http://localhost:8080/login/oauth2/code/saml-member"
oauthy.federation.saml.identity-providers[].registration-idStringrequired
oauthy.federation.saml.identity-providers[].entity-idString""
oauthy.federation.saml.identity-providers[].sso-urlString""
oauthy.federation.saml.identity-providers[].certificateString?null
oauthy.federation.saml.identity-providers[].metadata-uriString?null
oauthy.federation.saml.identity-providers[].metadata-refresh-interval-secondsLong86400
oauthy.federation.saml.identity-providers[].want-authn-requests-signedBooleantrue
oauthy.federation.saml.identity-providers[].want-assertions-encryptedBooleanfalse
oauthy.federation.saml.signing.keys[].aliasString"default"
oauthy.federation.saml.signing.keys[].certificateString""
oauthy.federation.saml.signing.keys[].private-keyString""
oauthy.federation.saml.signing.keys[].primaryBooleanfalse
oauthy.federation.saml.signing.grace-period-daysInt30
oauthy.federation.saml.signing.warning-threshold-daysInt30

Every property above is set as a YAML key under application.yml or, equivalently, as an environment variable using Spring's relaxed binding (oauthy.hub.platform-client-ids -> OAUTHY_HUB_PLATFORM_CLIENT_IDS). A _required_ default means the service will not start until the value is supplied.