SAML SSO Troubleshooting
This guide helps you diagnose and resolve common issues when configuring or using SAML Single Sign-On with Bruno.
Quick Pre-Flight Checks
Before diving into technical troubleshooting, verify these basic prerequisites. Most SSO login failures are due to one of these issues:
1. Is SSO Enabled in Bruno?
Check this first:
- Go to Bruno License Portal (
https://license.usebruno.com/
) - Navigate to Settings → SSO
- Verify the “Enable SSO” toggle is ON
- If it’s OFF, toggle it ON and click Save Configuration
Why this matters: If SSO is disabled, all SSO login attempts will fail with a 500 error.
Important: SSO must be enabled in the License Portal before users can log in via SSO. This is the first and most common cause of SSO login failures.
2. Is the User Already an Admin in Bruno License Portal?
Accessing the license portal requires admin access. Users will not need to be added as admins if they only need to activate their license via SSO.
Check this next:
- Go to Bruno License Portal → Settings → Admins
- Look for the user’s email address in the Admins list
- If the user is NOT in the list, they must be added first before they can use SSO
Why this matters: Users must be configured as admins in Bruno BEFORE they can log in via SSO. SSO only authenticates users who are already admins in the system.
If the user is not listed:
- Click the “Add Admin” button
- Enter the user’s email address
- Click Add
- The user will now be able to log in via SSO
After the user is added as an admin, verify role mapping:
- Go to Bruno License Portal → Settings → SSO
- Look at the “Admin Roles” field
- The user’s role (from their IdP) must match one of the values in this field
- Example: If Admin Roles is set to
admin,BrunoAdmin
, the user’s role must be exactlyadmin
orBrunoAdmin
How to verify the user’s role:
- In your IdP, check what role value is assigned to the user
- In Bruno License Portal → Settings → SSO, check the “Admin Roles” field
- Ensure they match exactly (case-sensitive)
Two-Step Process:
- First, add the user as an admin in Bruno License Portal (Settings → Admins)
- Then, ensure their IdP role matches the “Admin Roles” field in SSO settings
Both steps are required for SSO login to work.
Role Matching is Case-Sensitive: admin
≠ Admin
. The role value from your IdP must match exactly what’s in the Admin Roles field.
3. Is SSO Configuration Complete?
Verify all required fields are filled:
- Go to Bruno License Portal → Settings → SSO
- Check that these fields are NOT empty:
- SP Issuer ID / Entity ID
- IdP Login URL
- IdP Entity ID
- IdP Certificate
- Admin Roles (at least one role value)
Why this matters: If any required field is missing, Bruno cannot generate a SAML request and will return a 500 error.
Tip: If you’re not sure what values to use, refer to the SAML SSO Overview page for detailed explanations of each field.
Common Error Messages
”500 Internal Server Error” When Clicking “Login with SSO”
First, complete the pre-flight checks above (Is SSO enabled? Is the user an admin? Is configuration complete?)
Possible Causes:
- SSO is not enabled in Bruno (see Pre-Flight Check #1)
- User is not a License Manager Admin (see Pre-Flight Check #2)
- SSO configuration is incomplete (see Pre-Flight Check #3)
- Entity ID mismatch between Bruno and your IdP
- Invalid or malformed certificate in Bruno configuration
- IdP Login URL is missing or incorrect
What This Error Means: This error occurs when Bruno tries to generate a SAML authentication request but the SSO configuration is incomplete or invalid. The backend checks that all required fields are present before proceeding.
Solutions:
-
Complete the pre-flight checks first:
- Verify SSO is enabled
- Verify the user is a License Manager Admin (role matches Admin Roles)
- Verify all required configuration fields are filled
-
Verify Entity ID matches exactly:
- The “SP Issuer ID / Entity ID” in Bruno must match the “Identifier (Entity ID)” in your IdP configuration
- Example: If Bruno has
bruno-demo
, your IdP must also havebruno-demo
- The value can be anything, but it must be identical in both places
-
Check certificate format:
- Open the certificate file you downloaded from your IdP
- Copy the entire contents including
-----BEGIN CERTIFICATE-----
and-----END CERTIFICATE-----
lines - Paste into Bruno’s IdP Certificate field
- Ensure there are no extra spaces or line breaks at the beginning or end
-
Verify IdP Login URL is correct:
- The IdP Login URL should be the SAML entry point from your IdP
- Example:
https://idp.example.com/app/123/sso/saml
- This is typically found in your IdP’s SAML metadata
-
Save the configuration: Click “Save Configuration” button after making changes
-
Check browser console: Open Developer Tools (F12) → Console tab to see detailed error messages
-
Try disabling and re-enabling SSO: Toggle the “Enable SSO” switch off, save, then toggle it back on and save again
Backend Validation: Bruno validates that SSO is enabled and all required configuration fields are present before generating the SAML request. If any field is missing or SSO is disabled, you’ll see a 500 error. Check the browser console for the specific error message.
IdP Test Login Shows Error or Redirects to Bruno Login Page
Possible Causes:
- Reply URL (ACS URL) is configured incorrectly in your IdP
- Certificate or metadata mismatch
- SSO not fully enabled in Bruno
Solutions:
- Verify Reply URL (ACS URL): In your IdP’s SAML application configuration:
- Should be:
https://license.usebruno.com/api/v2/auth/sso/saml/acs/<your-subscription-id>
- This is where your IdP sends the SAML response after authentication
- The subscription ID is shown in the Bruno License Portal SSO settings page
- This URL must match EXACTLY what’s configured in Bruno
- Copy this URL exactly from the Bruno SSO settings page
- Should be:
- Ensure SSO is enabled in Bruno:
- IdP test login will fail if SSO is not fully configured and enabled in Bruno
- Complete the Bruno SSO configuration first, then test from your IdP
- Check the full error message: The error message may be truncated. Try:
- Opening the test in a new incognito/private browser window
- Checking the browser console for the full error message
- Looking at the Network tab in Developer Tools for the failed request
- Common error patterns:
- Reply URL mismatch: Check ACS URL configuration
- Authentication method mismatch: Verify SAML 2.0 is configured
- User not assigned: Ensure user is assigned to the Bruno application
- Application not found: Verify application is properly configured
Microsoft Entra ID Specific: If you see AADSTS
error codes:
AADSTS50011
: Reply URL mismatch - verify the ACS URL in Basic SAML ConfigurationAADSTS75011
: Authentication method mismatch - ensure SAML 2.0 is selectedAADSTS50105
: User not assigned - assign user/group to the Bruno application in Enterprise ApplicationsAADSTS700016
: Application not found - verify the application exists and is properly configuredAADSTS50020
: User account from identity provider does not exist - ensure the user is assigned to the Bruno application in Entra ID
Okta Specific: Common Okta-specific issues:
- “Invalid SAML Response”: Check that the Okta application’s SAML settings match Bruno’s requirements exactly
- “User not assigned”: In Okta Admin → Applications → Bruno app → Assignments, ensure users/groups are assigned
- “Invalid audience”: Verify the Audience URI in Okta matches Bruno’s SP Issuer ID exactly
- “Invalid destination”: Ensure the Single Sign On URL in Okta matches Bruno’s ACS URL
- Preview SAML assertion: Use Okta’s “Preview SAML assertion” feature to verify attribute values before testing
Testing Order: Always complete the Bruno SSO configuration first before testing from your IdP. The recommended testing flow is:
- Configure SSO in Bruno and save
- Test login by clicking “Login with SSO” from Bruno’s login page (SP-initiated)
- Once that works, test login from your IdP portal (IdP-initiated)
“SAML Response Validation Failed”
Possible Causes:
- Certificate mismatch between IdP and Bruno configuration
- Expired or invalid SAML certificate
- Clock skew between IdP and Bruno servers
Solutions:
- Verify the certificate in Bruno matches the certificate from your IdP
- Ensure you’ve copied the entire certificate including
-----BEGIN CERTIFICATE-----
and-----END CERTIFICATE-----
lines - Check that your IdP’s certificate hasn’t expired
- Verify your server’s system clock is synchronized (NTP)
Entra ID Specific: Entra ID certificates auto-rotate. If you see certificate validation errors:
- Check if Entra ID has issued a new certificate (Enterprise Applications → Bruno app → Single sign-on → SAML Certificates)
- Download the new certificate and update it in Bruno’s SSO configuration
- Entra ID typically notifies admins 30 days before certificate expiration
”Invalid ACS URL” or “Redirect URI Mismatch”
Possible Causes:
- Incorrect ACS URL configured in your IdP
- Missing or incorrect domain ID in the ACS URL
- ACS URL format doesn’t match what Bruno expects
Solutions:
- Use the exact ACS URL shown in Bruno: Copy the SAML ACS URL directly from the Bruno SSO settings page
- The URL format may vary depending on your Bruno version
- Common formats:
https://license.usebruno.com/saml/acs/{your-domain-id}
https://license.usebruno.com/api/v2/auth/sso/saml/acs/{your-domain-id}
- Check that you’ve replaced
{your-domain-id}
with your actual domain ID from Bruno - Ensure there are no trailing slashes or extra spaces in the URL
- Important: The ACS URL in your IdP must match EXACTLY what Bruno shows in the SSO settings page
Always copy the ACS URL directly from the Bruno SSO settings page rather than using the documentation examples, as the URL format may vary between Bruno versions.
”403 Forbidden” Error After Successful IdP Authentication
Symptoms:
- User successfully authenticates with their IdP
- User is redirected back to Bruno
- Bruno shows a 403 Forbidden error or “Access Denied” message
- Login does not complete
What This Error Means: Bruno received a valid SAML response from your IdP, but the user’s roles don’t match any configured role in Bruno’s “Admin Roles” or “User Roles” fields. This is a role mapping issue - the role value sent by your IdP doesn’t match what’s configured in Bruno.
How Role Matching Works (Backend Logic):
- Bruno extracts the
roles
attribute from the SAML response - Bruno checks if ANY of the user’s roles match the “Admin Roles” field
- If not, Bruno checks if ANY of the user’s roles match the “User Roles” field
- If neither match, Bruno returns a 403 Forbidden error
- Important: Role matching is case-sensitive and exact (
admin
≠Admin
)
Debugging Steps:
-
Check the SAML response to see what role value is being sent:
- Open browser dev tools (F12) → Network tab
- Attempt SSO login again
- Look for the POST request to
/api/v2/auth/sso/saml/acs/
- In the request payload, find the
roles
attribute value - Example:
<saml2:AttributeValue>admin</saml2:AttributeValue>
- Note: Users can have multiple roles; Bruno checks if ANY match
-
Verify role mapping in Bruno:
- Go to Bruno License Portal → Settings → SSO
- Check the “Admin Roles” and “User Roles” fields
- Ensure the exact role value from the SAML response is listed in one of these fields
- Important: Role matching is case-sensitive (
admin
≠Admin
)
Example Fix:
- If SAML response shows:
<saml2:AttributeValue>admin</saml2:AttributeValue>
- In Bruno Admin Roles field, add:
admin
- Or in Bruno User Roles field, add:
admin
- Click Save and test again
Other Possible Causes:
- Missing
roles
attribute in SAML response (not configured in IdP) - User not assigned to the Bruno application in IdP
- Quotes in role values (e.g.,
"admin"
vsadmin
) - Role value is empty or whitespace
Additional Checks:
- User Assignment: Verify the user is assigned to the Bruno application in your IdP
- Role Attribute Present: Confirm the
roles
attribute is being sent in the SAML response (check Network tab) - Quote Issues: Remove quotes from role values in your IdP configuration
- ❌ Bad:
"admin"
(with quotes) - ✅ Good:
admin
(no quotes)
- ❌ Bad:
- Empty Roles: Ensure the role value is not empty or just whitespace
Okta Specific: For 403 errors in Okta:
- Check the Group Assignments tab in your Okta Bruno application - users must be assigned either directly or through groups
- Verify Application Visibility settings - if “Hide application for users” is enabled, users may not be able to access it
- Check Sign On Policy - ensure there are no conditional access rules blocking the user
- Use Okta’s System Log (Reports → System Log) to see detailed authentication attempts and failures
Entra ID Specific: For 403 errors in Entra ID:
- Check Users and groups assignment in Enterprise Applications → Bruno app
- Verify Conditional Access policies aren’t blocking the user (Azure AD → Security → Conditional Access)
- Check User Risk Policy and Sign-in Risk Policy if Identity Protection is enabled
- Review Sign-in logs (Azure AD → Monitoring → Sign-ins) for detailed error information
- Ensure the user’s account is not disabled or requires password reset
Quick Test: If you’re unsure about role mapping, temporarily add a wildcard or common value like user
to both Admin Roles and User Roles fields in Bruno, then check what role value your IdP is actually sending in the SAML response.
”User Not Found” or “Access Denied” After Role Mapping
Symptoms:
- User’s role matches Bruno’s role mapping (403 error is gone)
- But user still cannot access Bruno
- Error message indicates user not found or access denied
What This Error Means: The user’s role matched Bruno’s configuration, but there’s an issue with the user’s email or account status. Bruno uses the NameID (email) from the SAML response to identify users.
How User Identification Works (Backend Logic):
- Bruno extracts the NameID from the SAML response (this should be the user’s email)
- Bruno converts the email to lowercase for consistency
- Bruno looks up the user in the database using this email
- If the user doesn’t exist, Bruno creates a new user account automatically
- If the user exists but is inactive, Bruno reactivates them
Debugging Steps:
-
Verify the NameID is an email address:
- Open browser dev tools (F12) → Network tab
- Attempt SSO login again
- Look for the POST request to
/api/v2/auth/sso/saml/acs/
- In the SAML response, find the NameID value
- Example:
<saml:NameID>user@example.com</saml:NameID>
- Ensure it’s a valid email address
-
Check email consistency:
- The NameID email should match the user’s email in your IdP
- Bruno uses this email to identify and create user accounts
- If the email changes between logins, Bruno will create a new account
-
Verify user assignment in IdP:
- Ensure the user is assigned to the Bruno application
- Check that the user’s email is correctly configured in the IdP
Solutions:
- Verify the user is assigned to the Bruno application in your IdP
- Ensure the NameID in your IdP is configured to send the user’s email address
- Check that the user’s email in the IdP is valid and consistent
- Verify the email attribute is correctly mapped in your IdP (should be NameID, not a separate attribute)
“Invalid Role” or “Insufficient Permissions”
Possible Causes:
roles
attribute not configured correctly in IdProles
attribute value doesn’t match any role in Bruno’s Admin Roles or User Roles fieldsroles
attribute is missing from the SAML assertion- Role mapping not configured in Bruno License Portal
Solutions:
- Verify the
roles
attribute is configured in your IdP’s SAML attribute statements - Ensure the attribute name is exactly
roles
(case-sensitive) - Check the SAML response to confirm the
roles
attribute is being sent and note its value - In Bruno License Portal → Settings → SSO, verify that the role value from the SAML assertion is listed in either:
- Admin Roles field (for admin access), or
- User Roles field (for standard access)
- Ensure role values are case-sensitive matches (e.g.,
Engineering
≠engineering
) - For your IdP: Verify the attribute/claim name is
roles
and the value matches what you configured in Bruno’s role mapping
Okta Role Debugging: Use Okta’s Preview SAML assertion feature:
- Go to Okta Admin → Applications → Bruno app → General tab
- Click Preview SAML assertion
- Select a test user to see exactly what role values will be sent
- Verify the
roles
attribute appears with the expected value - Copy this exact value to Bruno’s Admin Roles or User Roles field
Entra ID Role Debugging: Use the Test single sign-on feature:
- Go to Enterprise Applications → Bruno app → Single sign-on
- Click Test single sign-on with Bruno
- In the test results, expand View SAML response to see the actual claims being sent
- Look for the
roles
claim and note its value - Ensure this exact value is configured in Bruno’s role mapping fields
”Missing User Information” or “Name Not Displayed”
Possible Causes:
fullName
attribute not configured correctly in IdPfullName
attribute is missing from the SAML assertion- Name fields in IdP are empty
firstName
andlastName
attributes are not configured as fallback
What This Error Means:
Bruno tries to extract the user’s full name from the SAML response. If the fullName
attribute is missing, Bruno attempts to construct it from firstName
and lastName
attributes. If all are missing, Bruno uses the email address as the name.
How Name Extraction Works (Backend Logic):
- Bruno first looks for a
fullName
attribute in the SAML response - If
fullName
is not found, Bruno looks forfirstName
andlastName
attributes - If found, Bruno combines them:
firstName + " " + lastName
- If none of these are found, Bruno uses the email address (NameID) as the name
- The name is stored in the user’s profile
Debugging Steps:
-
Check what name attributes are being sent:
- Open browser dev tools (F12) → Network tab
- Attempt SSO login again
- Look for the POST request to
/api/v2/auth/sso/saml/acs/
- In the SAML response, look for these attributes:
fullName
(preferred)firstName
andlastName
(fallback)
- Example:
<saml2:Attribute Name="fullName"><saml2:AttributeValue>John Doe</saml2:AttributeValue></saml2:Attribute>
-
Verify attribute names are case-insensitive:
- Bruno looks for attributes case-insensitively (e.g.,
fullName
,FullName
,FULLNAME
all work) - But the attribute values are case-sensitive
- Bruno looks for attributes case-insensitively (e.g.,
-
Check user profile after login:
- After a successful SSO login, check the user’s profile in Bruno
- If the name is just an email address, the name attributes weren’t found
Solutions:
-
Configure
fullName
attribute (recommended):- Verify the
fullName
attribute is configured in your IdP’s SAML attribute statements - Configure the attribute to combine first and last name (e.g., concatenation of first name + space + last name)
- Check that user profiles in your IdP have first name and last name populated
- Verify the
-
Or configure
firstName
andlastName
attributes (fallback):- If you can’t use
fullName
, configure bothfirstName
andlastName
attributes - Bruno will automatically combine them with a space
- If you can’t use
-
Verify attributes are being sent:
- Check the SAML response to confirm the name attributes are being sent
- Use your IdP’s preview/test feature to verify attribute values
Okta fullName Configuration: In Okta attribute statements:
- Name:
fullName
- Name format: Unspecified
- Value:
user.firstName+" "+user.lastName
- Alternative:
user.displayName
if your Okta users have display names configured
Entra ID fullName Configuration: In Entra ID claims configuration:
- Claim name:
fullName
- Source: Transformation
- Transformation:
Join()
- Parameter 1:
user.givenname
- Separator:
- Parameter 2:
user.surname
- Alternative: Use
user.displayname
if available and properly formatted
Configuration Verification Checklist
Use this checklist to verify your SAML SSO configuration:
Identity Provider Configuration
- SAML application created for Bruno
- ACS URL configured correctly (copy from Bruno SSO settings page)
- Entity ID configured to match Bruno’s SP Issuer ID / Entity ID
- Name ID format set to EmailAddress
- Required attribute:
roles
configured to send user role values from your IdP (e.g.,Engineering
,BrunoAdmin
,IT-Team
, etc.) - Required attribute:
fullName
configured (e.g., concatenation of first and last name) - Users or groups assigned to the Bruno application
- SAML certificate is valid and not expired
Bruno Configuration
- SAML SSO enabled in Bruno License Portal
- SP Issuer ID / Entity ID configured (must match IdP Entity ID exactly)
- IdP Login URL entered correctly
- IdP Entity ID entered correctly
- IdP Certificate pasted correctly (including BEGIN/END lines)
- Admin Roles configured with role values that should have admin access
- User Roles configured with role values that should have user access
- Role values match exactly (case-sensitive) with the values sent in the
roles
attribute from IdP - Session timeout configured appropriately
Testing and Debugging
Test SSO Connection
- In Bruno License Portal, navigate to Settings → SAML SSO
- Click Test SSO Connection
- You should be redirected to your IdP
- Authenticate with your IdP credentials
- You should be redirected back to Bruno
- Verify your user information and roles are displayed correctly
Check SAML Response
If SSO login fails, you can inspect the SAML response to diagnose issues:
- Open your browser’s developer tools (F12)
- Go to the Network tab
- Attempt to log in via SSO
- Look for the POST request to
/saml/acs/
- Inspect the SAML response payload for errors
The SAML response contains assertions about the user’s identity and attributes. Look for missing or incorrect attribute values.
Verify Attribute Mapping
To verify that user attributes are being sent correctly:
- Complete a successful SSO login
- In Bruno, check the user’s profile information
- Verify that the
fullName
attribute is populated correctly - If attributes are missing, check your IdP’s attribute mapping configuration
- Inspect the SAML response (see “Check SAML Response” section) to verify both
roles
andfullName
attributes are present
Verify Role Assignment
To verify that roles are being assigned correctly:
- Complete a successful SSO login
- Check if the user has the expected access level (admin vs. user)
- If roles are incorrect:
- Check the SAML response to see what value is being sent in the
roles
attribute - Verify the
roles
attribute is configured in your IdP - In Bruno License Portal → Settings → SSO, check the “Admin Roles” and “User Roles” fields
- Ensure the role value from the SAML response matches one of the values in either field (case-sensitive)
- Example: If SAML sends
roles="Engineering"
, make sureEngineering
is listed in either Admin Roles or User Roles in Bruno
- Check the SAML response to see what value is being sent in the
Certificate Management
Certificate Expiration
SAML certificates typically expire after 1-3 years. When a certificate expires:
- Generate a new certificate in your IdP
- Update the certificate in Bruno SAML SSO settings
- Test the SSO connection to verify it works
Set a reminder to renew your SAML certificate before it expires to avoid service disruption.
Certificate Format Issues
If you encounter certificate errors:
- Ensure the certificate is in PEM format (Base64 encoded)
- Include the
-----BEGIN CERTIFICATE-----
header - Include the
-----END CERTIFICATE-----
footer - Remove any extra whitespace or line breaks within the certificate body
- Do not include the private key (only the public certificate)
Session and Timeout Issues
Users Being Logged Out Unexpectedly
Possible Causes:
- Session timeout set too low
- IdP session timeout shorter than Bruno session timeout
- Browser cookie issues
Solutions:
- Increase the session timeout in Bruno SAML SSO settings
- Check your IdP’s session timeout settings
- Clear browser cookies and cache
- Ensure cookies are enabled in the browser
Okta Session Management: Check these Okta settings:
- Global Session Policy (Security → Authentication → Global Session Policy)
- Application Sign On Policy (Applications → Bruno app → Sign On tab → Sign On Policy)
- Okta session lifetime vs Bruno session timeout - the shorter one will take precedence
Entra ID Session Management: Check these Entra ID settings:
- Conditional Access policies with session controls (Azure AD → Security → Conditional Access)
- Token lifetime policies (Azure AD → Security → Token lifetime policies)
- User sign-in frequency settings in Conditional Access
- Persistent browser session settings
Session Not Ending When Expected
Possible Causes:
- Session timeout set too high
- Browser keeping session alive
Solutions:
- Decrease the session timeout in Bruno SAML SSO settings
- Implement IdP-initiated logout if available
- Educate users to log out manually when finished
Attribute Configuration Troubleshooting
SAML Attribute Configuration
Issue: Users not getting correct roles or missing name information
Solutions:
- Verify the
roles
attribute is configured in your IdP:- Attribute/Claim name:
roles
- Value: Can be any value (e.g.,
"admin"
,"Engineering"
, department name, group name, etc.) - Ensure the attribute is included in the SAML assertion
- Attribute/Claim name:
- Verify the
fullName
attribute is configured in your IdP:- Attribute/Claim name:
fullName
- Value: Combination of first and last name (e.g., “John Doe”)
- Common configurations:
- Static concatenation:
firstName + " " + lastName
- Transformation/expression to join name fields
- Direct mapping from a single name field
- Static concatenation:
- Attribute/Claim name:
- Check attribute preview/test in your IdP to see what values will be sent
- Ensure attribute names are case-sensitive and match exactly
- Verify role mapping in Bruno: In Bruno License Portal → Settings → SSO:
- Check that the role value from your IdP is listed in either “Admin Roles” or “User Roles”
- Example: If your IdP sends
roles="Engineering"
, ensureEngineering
is in one of the role fields in Bruno
Testing Roles with Hardcoded Values
When to use this: If you’re having trouble getting role values to work correctly, you can temporarily configure a hardcoded role value in your IdP. This applies the same role to all users logging in via SSO and helps you isolate whether the issue is with role mapping or attribute configuration.
Important: This is for testing only. Once you verify SSO is working, configure proper role values based on your user directory.
Steps to test with hardcoded roles:
-
In your IdP, configure the
roles
attribute with a static/hardcoded value:-
Okta: In the SAML app → General → SAML Attribute Statements, set:
- Name:
roles
- Value:
admin
(or any test value) - This will send
roles="admin"
for all users
- Name:
-
Entra ID: In Enterprise Applications → Single sign-on → Attributes & Claims, add a new claim:
- Name:
roles
- Source: Attribute
- Source attribute: Select any attribute (or use a static value if available)
- Or use Transformation with a static value like
"admin"
- Name:
-
-
In Bruno License Portal, add this test value to Admin Roles:
- Go to Settings → SSO
- In the “Admin Roles” field, add the value you used (e.g.,
admin
) - Click Save Configuration
-
Test SSO login:
- Try logging in via SSO
- If it works, the issue is with your role attribute configuration in the IdP
- If it still fails, the issue is elsewhere (certificate, ACS URL, etc.)
-
Once testing is complete:
- Remove the hardcoded value from your IdP
- Configure proper role values based on your user directory (departments, groups, etc.)
- Update Bruno’s Admin Roles and User Roles fields with the actual role values
Important: Hardcoded role values apply to ALL users logging in via SSO. Only use this for testing. Once you’ve verified SSO is working, configure role values that map to your actual user attributes or groups.
Common IdP-Specific Configurations
For Okta:
- Attribute statements with Name format: Unspecified
roles
value examples:"admin"
,user.department
, static valuesfullName
value:user.firstName+" "+user.lastName
For Microsoft Entra ID:
- Claims configuration with source: Attribute or Transformation
roles
value examples: staticadmin
,user.department
, group mappingsfullName
transformation: Join() withuser.givenname
, space separator, anduser.surname
For other SAML 2.0 providers:
- Configure SAML attribute statements or claims
- Ensure attribute names match exactly:
roles
andfullName
- Use appropriate value mappings for your user directory
Okta Troubleshooting Tools: Leverage these Okta-specific debugging features:
- System Log (Reports → System Log): Search for authentication events and errors
- Preview SAML assertion: Test attribute values before going live
- Application dashboard: Monitor sign-in attempts and failures
- SAML Tracer browser extension: Capture and analyze SAML requests/responses
- Okta Expression Language: Use for complex attribute transformations
Entra ID Troubleshooting Tools: Use these Entra ID-specific debugging features:
- Sign-in logs (Azure AD → Monitoring → Sign-ins): Detailed authentication logs with error codes
- Audit logs (Azure AD → Monitoring → Audit logs): Track configuration changes
- Test single sign-on: Built-in testing tool with SAML response viewer
- Conditional Access insights: See which policies are affecting sign-ins
- Identity Protection: Monitor for risky sign-ins that might block SSO
- Enterprise Applications insights: Application-specific usage and error analytics
Getting Additional Help
If you’ve tried the troubleshooting steps above and still encounter issues:
- Review Documentation: Re-read the configuration guides for your specific IdP:
- Contact Support: Reach out to Bruno support with the following information:
- Your Bruno subscription ID
- Identity provider (Okta, Entra ID, or other SAML 2.0 provider)
- Error messages you’re seeing
- Steps you’ve already tried
- Screenshots of your configuration (redact sensitive information)