BoxLang 🚀 A New JVM Dynamic Language Learn More...

cbsso

v3.0.0+17 Modules

cbSSO

Welcome to cbSSO a ColdBox module to help integrate SSO into your application easily.

Bundled in this module are several SSO provider implementations that allow you to quickly and easily integrate with Identity Providers such as Microsoft, Google, GitHub or Facebook using standard protocols like SAML and oAuth.

To install run

box install cbsso

Once installed you can configure your settings like so

// config/modules/cbsso.cfc
component {
    function configure(){
        return {
            "providers": [
                {
                    type: "GoogleProvider@cbsso",
                    clientId: getJavaSystem().getProperty( "GOOGLE_CLIENT_ID" ),
                    clientSecret: getJavaSystem().getProperty( "GOOGLE_CLIENT_SECRET" )
                }
            ]
        };
    }
}

Your app now has the ability to direct users to Google for authentication!

SAML request replay cache

The Microsoft SAML provider stores outstanding authentication request IDs in a CacheBox cache. By default, cbSSO creates an application cache named cbssoSAMLRequests with a 10-minute timeout and a maximum of 10,000 entries.

For a clustered deployment, register a distributed CacheBox cache and select it in the cbSSO module settings:

// config/CacheBox.cfc
component {
    function configure(){
        cacheBox = {
            caches: {
                samlRequests: {
                    provider: "your.distributed.CacheBoxProvider",
                    properties: {
                        // Provider-specific settings go here
                    }
                }
            }
        };
    }
}

// config/modules/cbsso.cfc
component {
    function configure(){
        return {
            "samlRequestCacheName": "samlRequests",
            "providers": [
                // Provider configuration
            ]
        };
    }
}

When samlRequestCacheName is set, the named cache must already be registered with CacheBox when cbSSO activates; otherwise module activation fails rather than silently falling back to local memory.

For more complete documentation covering features and implementation check out our documentation site cbsso.ortusbooks.com.

Ortus Sponsors

ColdBox is a professional open-source project and it is completely funded by the community and Ortus Solutions, Corp. Ortus Patreons get many benefits like a cfcasts account, a FORGEBOX Pro account and so much more. If you are interested in becoming a sponsor, please visit our patronage page: https://patreon.com/ortussolutions

THE DAILY BREAD

"I am the way, and the truth, and the life; no one comes to the Father, but by me (JESUS)" Jn 14:1-12

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.


Unreleased

3.0.0 - 2026-08-26

3.0.0 - 2026-08-25

Added

  • Add getClaims() and getClaim() authorization response accessors.
  • Add getNameId() and getNameIdFormat() authorization response accessors.
  • Include claims, NameID, and NameID format in SAMLParsingService.extractIdentity().
  • Populate SAML claims only after successful response validation.

Changed

  • Request persistent SAML NameIDs.
  • Reject SAML responses larger than 1 MB before parsing.
  • BREAKING Fix SSOAuthorizationResponse.getName() to return Name, with a first/last name fallback.
  • Resolve the requested provider in Auth's preHandler.
  • BREAKING Make SAML display-name claims optional; use objectidentifier or NameID for identification.
  • BREAKING Replace extractUserInfo() with extractStatus() and extractIdentity().
  • Reject transient NameIDs when no other subject identifier is available.

Fixed

  • SECURITY Harden SAML XML parsing against XXE, DOCTYPE declarations, non-XML input, and deeply nested documents.
  • SECURITY Require a successful response with one signed, non-encrypted assertion and a matching issuer.
  • SECURITY Bind assertions to the configured audience and ACS recipient; require bearer confirmation and an AuthnStatement.
  • SECURITY Validate the SAML signature profile and bind its reference to the validated assertion.
  • SECURITY Enforce assertion and bearer confirmation validity windows, including a required expiry.
  • Add metadata fetch timeouts and robust, namespace-aware certificate parsing.
  • Improve signature verification errors and preserve cached certificates when metadata refreshes fail.
  • Read SAML identity only from the validated assertion.
  • Report clear errors for documents that are not SAML responses.
  • Match prefixed SAML claims and collect repeated or multi-valued claims.
  • #16 Fix missing-provider handling and events.
  • #17 Initialize failed authorization response properties safely.
  • Return an empty struct from getRawResponseData() when no response exists.

2.1.0 - 2026-05-08

  • Fix several bugs
  • Change SAMLParser to respect both claims/emailaddress and claims/name

2.0.0 - 2025-12-05

1.0.7 - 2024-12-06

1.0.7 - 2024-09-12

1.0.7 - 2024-09-05

1.0.6 - 2024-09-04

1.0.5 - 2024-09-04

1.0.4 - 2024-09-04

1.0.3 - 2024-09-04

1.0.2 - 2024-09-04

1.0.1 - 2024-09-04

1.0.0 - 2024-09-04

  • Add support for several SSO IP integrations

$ box install cbsso

No collaborators yet.
     
  • {{ getFullDate("2024-09-04T15:49:04Z") }}
  • {{ getFullDate("2026-08-26T22:57:08Z") }}
  • 2,209
  • 3,475