How to Configure SAML 2.0 SSO
Set up SAML-based single sign-on with enterprise identity providers like ADFS, CyberArk Identity, BeyondTrust, or Okta.
Overview
Chainsaw supports SAML 2.0 alongside OIDC for organizations whose identity providers or PAM platforms primarily use SAML. This is common in environments running CyberArk PVWA, BeyondTrust Password Safe, ADFS, or Shibboleth.
Chainsaw acts as a SAML Service Provider (SP). Your identity provider (IdP) authenticates users and sends a SAML assertion back to Chainsaw, which maps the user to a local account.
Prerequisites
- Owner or Admin role in Chainsaw
- Access to your SAML IdP admin console
- The IdP must support SAML 2.0 (ADFS, Okta, Azure AD, Ping Identity, CyberArk Identity, etc.)
Step 1: Collect Chainsaw SP Information
Navigate to Settings > SSO and select SAML 2.0 as the protocol. Chainsaw displays two values you need to register in your IdP:
| Value | Description |
|---|---|
| SP Metadata URL | Your IdP can fetch this to auto-configure the trust relationship |
| ACS URL | The Assertion Consumer Service endpoint where SAML responses are posted |
Copy both values.
Step 2: Register Chainsaw in Your IdP
Create a new SAML application in your identity provider.
Common Settings
| Setting | Value |
|---|---|
| Entity ID / Audience | The SP Metadata URL shown by Chainsaw |
| ACS URL (Reply URL) | https://your-domain/chainsaw/api/auth/saml/acs |
| Name ID Format | emailAddress (recommended) |
| Name ID Value | User’s email address |
Attribute Statements (Claims)
Configure your IdP to send these attributes in the SAML assertion:
| Attribute Name | Value | Required |
|---|---|---|
email | User’s email address | Yes |
displayName | User’s full name | Recommended |
groups | User’s group memberships | For group-to-role mapping |
Provider-Specific Notes
ADFS
- Add a Relying Party Trust using the SP Metadata URL
- Configure claim rules to send email, name, and group attributes
Okta
- Create a new SAML 2.0 application
- Set Single Sign-On URL to the ACS URL
- Set Audience URI to the SP Metadata URL entity ID
Azure AD (Entra ID)
- Create an Enterprise Application > Non-gallery application
- Configure SAML SSO and set the Reply URL and Identifier
- Map user attributes under Attributes & Claims
CyberArk Identity
- Add Chainsaw as a SAML Application
- Upload the SP metadata or manually configure the ACS URL
- Map CyberArk roles to SAML group claims
Step 3: Configure SAML in Chainsaw
Navigate to Settings > SSO and select SAML 2.0:
- Enter the IdP Metadata URL (your IdP’s SAML metadata endpoint)
- Verify or customize the attribute mapping:
- Email Attribute (default:
email) - Name Attribute (default:
displayName) - Groups Attribute (default:
groups)
- Email Attribute (default:
- Set the Name ID Format if your IdP uses something other than email
- Configure allowed email domains, JIT provisioning, and default role
- Toggle Enabled to on
- Click Save Configuration
Chainsaw auto-generates an SP signing certificate on first save. The certificate is included in the SP metadata.
Step 4: Test the SAML Flow
- Open a new browser or incognito window
- Navigate to your Chainsaw login page
- Click Sign in with SSO
- You should be redirected to your identity provider
- Authenticate with your corporate credentials
- You should be redirected back to Chainsaw and logged in
Step 5: Troubleshooting
Common Issues
| Issue | Cause | Fix |
|---|---|---|
| ACS URL mismatch | Chainsaw URL doesn’t match IdP config | Verify exact URL in IdP matches the ACS URL shown by Chainsaw |
| Invalid assertion signature | IdP cert rotation | Re-import IdP metadata in Chainsaw |
| Attribute not found | Claim name mismatch | Check attribute mapping in Chainsaw matches your IdP’s claim names |
| Clock skew error | Time difference between servers | Sync both servers with NTP (SAML allows 5-minute skew) |
| User not provisioned | JIT disabled and no existing account | Enable JIT provisioning or pre-invite the user |
Checking Logs
# Docker
docker logs chainsaw | grep -i "saml\|sso\|auth"
# Binary
journalctl -u chainsaw | grep -i "saml\|sso\|auth"
Best Practices
- Use IdP Metadata URL over XML paste – metadata URLs auto-update when certificates rotate
- Enable JIT provisioning for frictionless onboarding
- Configure group-to-role mappings to automate role assignment from IdP groups
- Test with a single user first before enabling for the entire organization
- Keep password login as a fallback until SAML is proven stable
- Skip local 2FA when your IdP already enforces MFA
Next Steps
- How to Set Up SSO Group-to-Role Mappings – Automate role assignment from IdP groups
- How to Configure SCIM Provisioning – Automate user lifecycle management
- How to Configure SSO/OIDC – Use OIDC instead of SAML