passbolt/passbolt_api · error · BadRequestException
No valid SSO settings found.
Error message
No valid SSO settings found.
What it means
Catch-all in SsoPingOneService::assertAndGetSsoSettings: every failure while fetching/validating active SSO settings (none active, wrong provider, wrong data DTO) is rethrown as BadRequestException 'No valid SSO settings found.' with the underlying exception attached as previous.
Solutions
- Create/activate valid PingOne SSO settings via the admin SSO configuration flow
- If a different provider is active, use its endpoint instead of the PingOne service
- Inspect the chained previous exception in logs to identify whether it was not-found vs validation mismatch
- Confirm the app talks to the environment/database containing the expected SSO settings
Defensive patterns
Strategy: try-catch
Validate before calling
try {
$settings = (new SsoSettingsGetService())->getActiveOrFail(true);
$hasValidPingOne = $settings->provider === SsoSetting::PROVIDER_PINGONE
&& $settings->data instanceof SsoSettingsPingOneDataDto;
} catch (RecordNotFoundException $e) {
$hasValidPingOne = false;
} Try / catch
try {
$settings = $pingOneService->assertAndGetSsoSettings();
} catch (BadRequestException $e) {
$previous = $e->getPrevious();
// not-found => run SSO setup; else provider/data mismatch
} Prevention
- Activate valid PingOne settings before users attempt SSO login
- Check the previous exception to separate not-found from validation errors
- Confirm the environment/database holds the expected settings
When it happens
Trigger: getActiveOrFail(true) finds no active settings (SSO unconfigured, deleted, or draft); or one of the PingOne provider/data validation errors fired inside the try and got wrapped by this catch.
Common situations: SSO never set up or removed by admin; settings in draft state; request hit the PingOne endpoint while another provider is active; wrong database/environment without settings.
Understand the failure class
Background: "missing required config value" errors: why libraries refuse to start when a configuration key is empty, unset, or blank — this error's family across 48 libraries.
Related errors
- The SSO settings do not exist.
- Invalid provider. Expected PingOne.
- No valid SSO settings found.
- No valid SSO settings found.
- No valid SSO settings found.
AI-assisted analysis of passbolt/passbolt_api@31c1bbc10f (2026-09-17).
Data as JSON: /api/errors/4a0553d136f9061e.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/PassboltEe/Sso/src/Service/Sso/PingOne/SsoPingOneService.php:72
['httpClient' => $this->getCustomHttpClient()]
);
}
/**
* @return \Passbolt\Sso\Model\Dto\SsoSettingsDto
*/
protected function assertAndGetSsoSettings(): SsoSettingsDto
{
try {
$ssoSettings = (new SsoSettingsGetService())->getActiveOrFail(true);
if ($ssoSettings->provider !== SsoSetting::PROVIDER_PINGONE) {
throw new BadRequestException(__('Invalid provider. Expected PingOne.'));
}
if (!($ssoSettings->data instanceof SsoSettingsPingOneDataDto)) {
throw new BadRequestException(__('Invalid provider data. Expected PingOne settings.'));
}
} catch (Exception $exception) {
throw new BadRequestException(__('No valid SSO settings found.'), 400, $exception);
}
return $ssoSettings;
}
}
View on GitHub (pinned to 31c1bbc10f)