SAML Service Provider Setup Guide for WWPass Management Portal
Table of Contents
- Overview
- Prerequisites
- Creating a Service Provider
- Configuring Your Application (SP)
- Advanced Settings
- Testing the Integration
- Troubleshooting
Overview
SAML (Security Assertion Markup Language) 2.0 is a standard for implementing Single Sign-On (SSO). The WWPass SAML service acts as the Identity Provider (IdP), providing secure passwordless authentication, while your application acts as the Service Provider (SP), which trusts WWPass authentication.
How It Works
- User attempts to log into your application (SP)
- SP redirects user to WWPass SAML IdP
- User authenticates via WWPass (passwordless)
- WWPass SAML IdP sends a signed SAML assertion back to SP
- SP verifies the signature and grants access to the user
Prerequisites
Before starting configuration, ensure you have:
- An account in WWPass Management Portal
- A Provider (application) created in the Providers section
- Payment configured (active subscription required to activate SAML)
- Access to SAML settings in your application (SP)
- Your application supports SAML 2.0 SP
Recommendation: For production environments, configure a custom domain in the Domains section.
Creating a Service Provider
Step 1: Navigate to SAML Integration Creation
- Log into WWPass Management Portal
- Go to the Providers section
- Select the required Provider or create a new one
- Click "Add Integration" → "New SAML Integration"
Step 2: Choose Configuration Method
There are two ways to create a SAML SP:
Method 1: Upload Metadata XML (Recommended)
This is the easiest and most reliable method — all parameters are filled automatically.
-
Get the metadata file from your application (SP):
- Usually a URL like:
https://your-app.com/saml/metadata - Or an XML file downloadable from SP admin panel
- Usually a URL like:
-
Copy the XML file contents
-
Paste the XML into the "SP Metadata XML" field
Example XML structure:
<?xml version="1.0"?>
<md:EntityDescriptor
xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
entityID="https://your-app.com/saml/metadata">
<md:SPSSODescriptor
AuthnRequestsSigned="false"
WantAssertionsSigned="true"
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>
MIIDXTCCAkWgAwIBAgIJAKZ...
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:KeyDescriptor use="encryption">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>
MIIEFTCCAv2gAwIBAgIUZ9Q...
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
<md:AssertionConsumerService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://your-app.com/saml/acs"
index="0"
isDefault="true"/>
<md:SingleLogoutService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://your-app.com/saml/slo"/>
</md:SPSSODescriptor>
</md:EntityDescriptor>
- Click "Create SAML Integration"
What will be extracted from metadata:
- Entity ID
- Assertion Consumer Service URL (ACS URL)
- Single Logout Service URL (SLS URL) — if specified
- Signing certificates (SP signing certificates)
- Encryption certificate (SP encryption certificate) — if specified
Method 2: Manual Entry
If you don't have metadata XML, fill in the fields manually:
-
Entity ID* (required)
- Unique identifier for your SP
- Usually a URL like:
https://your-app.com/saml/metadata - Example:
https://my-app.example.com/metadata
-
Assertion Consumer Service URL (ACS URL)* (required)
- URL where IdP will send SAML response after authentication
- Example:
https://my-app.example.com/saml/acs - Must support HTTP-POST binding
-
Single Logout Service URL (SLS URL) (optional)
- URL for handling Single Logout requests
- Example:
https://my-app.example.com/saml/slo
-
Click "Create SAML Integration"
Important: Entity ID and ACS URL must match exactly with settings in your application (SP). Any mismatch will cause authentication errors.
Step 3: Payment Confirmation
If you haven't configured subscription yet:
- System will automatically redirect you to Stripe payment page
- After completing payment, SAML SP will be created automatically
Configuring Your Application (SP)
After creating SAML SP in WWPass Management Portal, you need to configure your application.
Step 1: Get IdP Parameters
On your SAML SP page in the "IdP Configuration" section, you'll find:
| Parameter | Value | Description |
|---|---|---|
| IdP Metadata URL | https://saml.wwpass.com/idp/metadata | IdP metadata URL (recommended for auto-configuration) |
| IdP Entity ID | https://saml.wwpass.com | Unique identifier for WWPass SAML IdP |
| SSO Endpoint | https://saml.wwpass.com/saml/sso | URL for authentication initiation (HTTP-POST and HTTP-Redirect) |
| SLO Endpoint | https://saml.wwpass.com/saml/slo | URL for Single Logout |
Step 2: Configure Your Application (SP)
Option A: Import IdP Metadata (Recommended)
Most SAML SPs support metadata import:
- In your application's SAML settings, find "Import IdP metadata" or "IdP Metadata URL" option
- Paste URL:
https://saml.wwpass.com/idp/metadata - Or download XML: click "Download Metadata XML" in WWPass Management Portal and upload to SP
Option B: Manual Configuration
If automatic import is unavailable, enter parameters manually:
Basic parameters:
- IdP Entity ID:
https://saml.wwpass.com - SSO URL / Login URL:
https://saml.wwpass.com/saml/sso - Logout URL:
https://saml.wwpass.com/saml/slo - IdP Certificate: Download certificate by clicking "Download Certificate" in "IdP Certificate" section
Protocol settings:
- Binding:
HTTP-POST(preferred) orHTTP-Redirect - NameID Format:
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent(or other configured in WWPass) - Sign Assertions: Enabled (WWPass always signs assertions)
- Encrypt Assertions: Optional (configured in WWPass Management Portal)
Step 3: Download and Install IdP Certificate
- In WWPass Management Portal, go to SAML SP page
- In "IdP Certificate" section, click "Download Certificate"
- Upload the downloaded
.pemor.cerfile to your application's SAML settings - Ensure the certificate is used for signature verification of SAML assertions
Important: Without properly installed certificate, your application won't be able to verify SAML response signature and will deny access.
Step 4: Verify Name ID Format
WWPass supports the following Name ID formats:
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent(recommended)urn:oasis:names:tc:SAML:2.0:nameid-format:transienturn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
Ensure the format in your SP matches the setting in WWPass Management Portal (default: persistent).
Advanced Settings
To configure additional parameters, click "Edit Settings" on the SAML SP page.
1. Required Attributes
Select attributes that must be present in the user's WWPass profile:
email— Email addressname— Full namegiven_name— First namefamily_name— Last namephone_number— Phone numberaddress— Addressbirthdate— Date of birthgender— Gendercompany— Company nametitle— Job title
Note: If a selected attribute is missing from the user, authentication will be rejected with a prompt to complete the profile.
2. Security: Signed Requests from SP
If your SP can sign AuthnRequest (authentication requests):
Step 1: Enable Signature Verification
- Check "Require signed requests from SP"
- In the "SP Signing Certificates" field, paste SP public certificates in PEM format
Example:
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAKZ4c3Q...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEFTCCAv2gAwIBAgIUZ9Q...
-----END CERTIFICATE-----
Step 2: Configure Signature Policy
- Require AuthnRequest signature — Reject unsigned requests (403 Forbidden)
- Sign Response wrapper — Sign not only Assertion but entire Response
- Recommended for: Okta, Azure AD, ADFS in strict mode
- Protects against signature wrapping attacks
Step 3: Choose Algorithms (Optional)
Signature Algorithm:
RSA-SHA256(recommended)RSA-SHA512(maximum security)RSA-SHA1(deprecated, not recommended, NIST deprecated 2013)
Digest Algorithm:
SHA-256(recommended)SHA-512(maximum security)SHA-1(deprecated, not recommended)
Best Practice: Leave fields empty to automatically accept any secure algorithm (SHA-256 or SHA-512).
3. Assertion Encryption
For maximum security, you can enable SAML assertion encryption:
- Check "Encrypt assertions"
- In the "SP Encryption Certificate" field, paste SP public encryption certificate (PEM)
- Ensure SP has the corresponding private key for decryption
When to use: If SAML Response is transmitted through untrusted channels or additional data protection is required.
4. Branding
Customize the appearance of the WWPass authentication page:
-
Logo URL: Link to your company logo (displayed on login page)
- Format: HTTPS URL
- Recommended size: 200x50px, up to 1MB
- Example:
https://example.com/logo.svg
-
Background Color: Background color of authentication page
- Format: HEX (e.g.,
#2E75E6) - Use your brand color palette
- Format: HEX (e.g.,
5. User Consent and Attribute Review
When show_consent is enabled (via Management API) or user explicitly requests attribute review:
Consent Flow:
- User authenticates via WWPass
- Consent screen is shown with:
- SP name and logo
- List of attributes to be shared
- "Authorize" and "Review Attributes" buttons
- If user clicks "Review Attributes":
- Redirected to
/saml/attributes/edit - User can modify or provide missing attributes
- System tracks user intent via internal session
- Redirected to
- After review → consent is saved for this SP
- Subsequent logins skip consent screen (until revoked)
Configuration:
- Set
show_consent: truein SP configuration via Management API - Consent is stored per user (puid) + SP (sp_id) pair
- User can revoke consent by clicking "Review Attributes" again
- Revoked consent triggers attribute review on next login
Use Cases:
- Privacy compliance: Allow users to see what data is shared
- Data minimization: Let users opt out of sharing optional attributes
- Transparency: Build trust by showing clear authorization flow
Note: Consent flow is optional and configured at SP level. If not enabled, users proceed directly to attribute collection (for missing required attributes) without explicit consent screen.
Testing the Integration
Step 1: Test Authentication
- Open your application (SP) in browser
- Click "Sign in with WWPass" or "Login via SAML" button
- You should be redirected to WWPass page
- Authenticate via WWPass (use WWPass Key or mobile app)
- After successful authentication, you'll be returned to your application
Step 2: Verify Transmitted Attributes
Ensure your application receives and correctly processes SAML attributes:
Standard WWPass attributes:
<saml:Attribute Name="email">
<saml:AttributeValue>user@example.com</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="name">
<saml:AttributeValue>John Doe</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="given_name">
<saml:AttributeValue>John</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="family_name">
<saml:AttributeValue>Doe</saml:AttributeValue>
</saml:Attribute>
Step 2a: Understand Attribute Sources
WWPass provides attributes from multiple sources:
| Source | Attributes | Description |
|---|---|---|
| WWPass Authentication | puid | Always included after authentication (persistent user identifier) |
| WWPass Claims (SPFE) OR User Input | email, name, given_name, family_name, phone_number | First retrieved from WWPass Claims container if available, otherwise collected via attribute editing form if required by SP |
| User Input | birthdate, gender, address, company, title | Collected via attribute editing form if required by SP and not present |
Claim Mapping: WWPass claims use 1:1 mapping to SAML attribute names (no transformation).
Note:
puidis always included in assertionsemailis always included if available, regardless of NameID format- Other attributes are only included if listed in SP's
attributes_requiredconfiguration AND present in user data
Step 3: Verify IdP Certificate
IdP Certificate Management:
The WWPass SAML IdP uses automated certificate management via Key Manager. The IdP certificate is:
- Automatically rotated before expiration
- Always available at the metadata endpoint (
/idp/metadata) - Valid for 90 days (typical duration)
To verify certificate validity:
-
Download IdP metadata:
curl https://saml.wwpass.com/idp/metadata > idp-metadata.xml -
Extract certificate from
<ds:X509Certificate>element -
Check expiration date:
openssl x509 -noout -dates -in cert.pem
Important: If you suspect certificate issues, download fresh metadata and update your SP configuration. The WWPass SAML IdP automatically updates certificates before expiration, so SPs should periodically refresh metadata or handle certificate rollovers gracefully.
Troubleshooting
Issue 1: "Invalid SAML Response" or "Signature verification failed"
Cause: SP cannot verify SAML response signature.
Solution:
- Ensure correct IdP certificate is loaded in SP
- Download certificate again: WWPass Management Portal → SAML SP → "Download Certificate"
- Check certificate format (should be PEM with
-----BEGIN CERTIFICATE-----headers) - Ensure certificate hasn't expired (check expiration in "IdP Certificate" section)
Issue 2: "Invalid ACS URL" or "Invalid Destination"
Cause: Entity ID or ACS URL in WWPass Management Portal doesn't match SP settings.
Solution:
- Compare parameters:
- In WWPass Management Portal: Entity ID and ACS URL on SAML SP page
- In your SP: Entity ID and ACS URL in SAML settings
- They must match exactly (including http/https, trailing slash
/) - If change needed — click "Edit Settings" in WWPass Management Portal
Issue 3: "Required attribute missing" or "User profile incomplete"
Cause: User hasn't filled required attributes (Required Attributes).
Solution:
- Ask user to complete WWPass profile
- Or remove requirement in WWPass Management Portal → Edit Settings → Required Attributes
Issue 4: "AuthnRequest signature validation failed"
Cause: "Require signed requests from SP" option is enabled, but SP certificate not uploaded or incorrect.
Solution:
- Go to WWPass Management Portal → Edit Settings
- Paste correct SP signing certificates in "SP Signing Certificates" field
- Or disable signature verification (uncheck "Require signed requests from SP")
Issue 5: "NameID format not supported"
Cause: SP requires different NameID format.
Solution:
- Go to WWPass Management Portal → Edit Settings → Name ID Format
- Select format supported by your SP:
persistent— unique permanent user ID (recommended)transient— temporary ID (for single session)emailAddress— email as NameID
- Save changes
Issue 6: SP doesn't receive user attributes
Cause: SP incorrectly parses SAML AttributeStatement.
Solution:
- Check SP logs — attributes should be visible in SAML Response
- Ensure SP correctly extracts attributes from
<saml:Attribute Name="...">elements - Check attribute mapping in SP settings (e.g.,
email→user.email)
Issue 7: "Certificate expired" or "Certificate not valid yet"
Cause: IdP certificate has expired.
Solution:
- The WWPass SAML IdP automatically updates certificates via Key Manager
- Download new certificate: WWPass Management Portal → "Download Certificate"
- Upload new certificate to your SP
- If problem persists — contact WWPass support
Managing SAML SP
Editing Settings
- Go to SAML SP page
- Click "Edit Settings"
- Make changes
- Click "Save Settings"
Reset Configuration
Warning: This will delete current SP and create a new one. All settings will be lost.
- Go to "Danger Zone" section
- Click "Reset"
- Confirm action
When to use: If configuration is seriously damaged and you need to start over.
Delete SAML Integration
Warning: This will completely delete SAML SP. Users won't be able to log in via WWPass.
- Go to "Danger Zone" section
- Click "Disable SAML"
- Confirm action
Additional Resources
- SAML 2.0 Specification: https://docs.oasis-open.org/security/saml/v2.0/
- WWPass Documentation: https://wwpass.com/developers
- Support: support@wwpass.com
Successful Integration Checklist
- Provider created and activated in WWPass Management Portal
- SAML SP created with correct Entity ID and ACS URL
- IdP certificate downloaded and uploaded to SP
- IdP metadata imported to SP (or parameters entered manually)
- Test authentication successful
- User attributes transmitted correctly
- (Optional) Branding configured (logo, color)
- (Optional) AuthnRequest signature configured (if required)
- (Optional) Assertion encryption configured (if required)
Congratulations! Your SAML integration is ready to use.
Users can now securely log into your application via WWPass without using passwords.