Integration guide · reviewed 9 August 2026

Connect SAASPASS to FastSSO.

The cleanest boundary is SAASPASS as the upstream workforce identity provider and FastSSO as the broker that presents one stable OIDC contract to independent applications.

Design status: review-ready, not live. FastSSO’s upstream OIDC callback is intentionally unimplemented. The adapter must continue to fail closed until metadata, token validation, replay handling, and conformance fixtures pass.

1. Architecture decision

Use a tenant-specific Generic OIDC application in the SAASPASS Admin Portal. SAASPASS performs workforce authentication and MFA. FastSSO validates the returned identity, binds it to the selected organization and connection, and issues a separate downstream authorization code to the requesting application.

SAASPASSUpstream IdP + MFA
FastSSOOIDC RP + identity broker
ApplicationOIDC client + authorization

This split avoids passing SAASPASS access or ID tokens to applications. It also means applications never need a SAASPASS client secret and remain independent of the provider chosen by another tenant.

SystemOwnsMust not own
SAASPASSUser authentication, MFA method, workforce assignmentFast* application authorization policy
FastSSOTenant routing, upstream token validation, identity normalization, downstream code issuancePasswords or business permissions
ApplicationSession, roles, permissions, local deprovisioning responseSAASPASS tokens or tenant IdP credentials

2. Configuration

In SAASPASS

  1. Create or select the customer company and add a Generic OIDC application.
  2. Register the exact planned callback: https://<fastsso-host>/oidc/<connection_id>/callback. Do not use wildcards.
  3. Select Authorization Code; enable its PKCE variant if the tenant supports it. Request only openid email profile.
  4. Assign a small pilot group. Record the App Key (client ID), App Password, expected issuer value, and the application-specific signing public key shown in the Developers tab.
  5. Confirm key-rotation procedure, supported signing algorithms, nonce behavior, and production issuer with SAASPASS before enabling traffic.

In FastSSO

Create a tenant-scoped connection using the saaspass preset. Store the secret outside source control and encrypt it at rest before production.

{
  "provider": "saaspass",
  "protocol": "oidc",
  "issuer": "<exact iss claim confirmed by SAASPASS>",
  "client_id": "<SAASPASS App Key>",
  "client_secret": "<secret-manager reference>",
  "signing_public_key": "<pinned application public key>",
  "authorization_endpoint": "https://www.saaspass.com/sd/oauth/authorize",
  "token_endpoint": "https://www.saaspass.com/sd/oauth/token",
  "userinfo_endpoint": "https://www.saaspass.com/sd/oauth/userinfo",
  "scopes": ["openid", "email", "profile"]
}

Metadata caveat. The public SAASPASS reference documents endpoints and an application-specific public key, but does not expose a JWKS URI in that reference. Its example issuer uses http://www.saaspass.com even though protocol calls use HTTPS. Treat neither value as an assumption: capture a test token, confirm the exact iss, obtain the key through an authenticated admin channel, and pin both in the connection.

3. Authentication flow

  1. The application sends a normal downstream request to FastSSO with state, nonce, and an S256 PKCE challenge.
  2. FastSSO validates the client and exact redirect URI, discovers the organization from the verified email domain, and selects its SAASPASS connection.
  3. FastSSO creates a one-time upstream transaction containing organization, connection, downstream request, random state, nonce, and a separate PKCE verifier.
  4. The browser goes to SAASPASS /sd/oauth/authorize for authentication and MFA.
  5. The callback rejects missing/mismatched state, errors, expired transactions, or a reused transaction before exchanging the code server-to-server at /sd/oauth/token.
  6. FastSSO validates the ID token and maps the identity. Only then does it issue its own short-lived downstream code and resume the application flow.

SAASPASS documents code_challenge_method=SHA-256; the standards value is normally S256. Verify the accepted wire value in an isolated tenant and add it as an interoperability fixture instead of silently trying both in production.

4. Claim mapping and account linking

SAASPASS inputFastSSO outputPolicy
subStored as upstream subjectPrimary immutable link within this connection
emailemailRequire the verified SAASPASS email and a verified tenant domain
name, given_name, family_nameNormalized profile claimsOptional; absence must not fail authentication
saaspass_idPrivate adapter metadataDo not expose downstream unless a documented need exists
SAASPASS assignments/groupsgroupsNo mapping until an authoritative supported claim/API is confirmed
Connection contextorganization_id, connection_idSet by FastSSO, never trusted from upstream claims

Use the tuple (connection_id, upstream sub) as the durable identity key. Email is routing and profile data, not the sole account-linking key; SAASPASS notes that a user may have multiple profiles.

5. Non-negotiable validation gates

6. Lifecycle and alternative channels

SAASPASS also documents SAML, its HTTP API, application/company-scoped tokens, OTP checks, and dynamic client registration. These are separate phases:

7. Rollout plan

  1. Contract capture: obtain a non-production tenant, public signing key, sample tokens, issuer confirmation, PKCE/nonce behavior, error catalogue, and key-rotation procedure.
  2. Adapter: implement an OIDC client behind providers/ with encrypted credentials and transactional one-time state.
  3. Adversarial tests: pass malicious and conformance fixtures before replacing HTTP 501.
  4. Pilot: one organization, one verified domain, one assigned group, short sessions, and a tested break-glass rollback.
  5. Operate: monitor only redacted event types and identifiers; document credential rotation, tenant offboarding, and incident revocation.

Official sources

Vendor capabilities and documentation can change. Re-verify the authenticated SAASPASS Admin Portal configuration and live protocol metadata during implementation.