{"record":{"id":"52286666c4ee8c94","repo":"SonarSource/sonarqube","slug":"skipping-github-authentication-setup","errorCode":null,"errorMessage":"Skipping GitHub authentication setup: {}","messagePattern":"Skipping GitHub authentication setup: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"server/sonar-webserver-webapi/src/main/java/org/sonar/server/almsettings/ws/GithubManifestCallbackFilter.java","lineNumber":209,"sourceCode":"      true,\n      credentials.clientId(),\n      credentials.clientSecret(),\n      credentials.getAppId(),\n      credentials.pem(),\n      false,\n      \"https://api.github.com/\",\n      \"https://github.com/\",\n      allowedOrganizations,\n      ProvisioningType.JIT,\n      true,\n      true,\n      false);\n    try {\n      githubConfigurationService.createConfiguration(dbSession, configuration);\n      return true;\n    } catch (BadRequestException e) {\n      // A GitHub authentication configuration already exists; leave it untouched but continue the flow.\n      LOG.warn(\"Skipping GitHub authentication setup: {}\", e.getMessage());\n      return false;\n    }\n  }\n\n  private String success(PendingManifest pending) {\n    String url = manifestGenerator.baseUrl() + settingsPathFor(pending) + \"&almManifestResult=success\";\n    if (pending.settingKey() != null) {\n      url += \"&almKey=\" + encode(pending.settingKey());\n    }\n    return url;\n  }\n\n  // Used before the pending state is resolved (blank params, non-admin, invalid/expired state): the\n  // originating page is unknown, so fall back to the DevOps integration settings page.\n  private String error(String message) {\n    return errorOn(SETTINGS_PATH, message);\n  }\n","sourceCodeStart":191,"sourceCodeEnd":227,"githubUrl":"https://github.com/SonarSource/sonarqube/blob/184c821202192afc1c599fc912d0889b69fffa53/server/sonar-webserver-webapi/src/main/java/org/sonar/server/almsettings/ws/GithubManifestCallbackFilter.java#L191-L227","documentation":"This warning is logged by GithubManifestCallbackFilter.setupAuthentication when, during the GitHub App manifest configuration flow, creating the GitHub authentication configuration fails with a BadRequestException — which in practice means a GitHub authentication configuration already exists. The filter logs and continues the flow, leaving the existing configuration untouched.","triggerScenarios":"Completing the GitHub App manifest auto-configuration flow (POST on the callback URL) while a GitHub authentication integration already exists in SonarQube; the service refuses to create a second one.","commonSituations":"Administrator retries the manifest setup after it partially completed the first time; a GitHub App (alm settings) and a GitHub authentication setting both exist; two admins run the auto-setup concurrently.","solutions":["This is benign if the existing GitHub authentication configuration is correct — verify it under Administration > Security > GitHub and keep it","If a fresh authentication setup is desired, delete the existing GitHub authentication configuration first, then re-run the manifest flow","Use api/users/identity_providers or the settings UI to inspect the existing identity provider before changing anything","Avoid re-submitting the manifest callback; the manifest token is single-use and a rerun only re-triggers this path"],"exampleFix":"null","handlingStrategy":"try-catch","validationCode":"// Before running the manifest flow, check whether GitHub authentication is already configured\n// e.g. Administration > Security > GitHub, or identity provider listing API — skip auto-setup if present","typeGuard":null,"tryCatchPattern":"// The filter already handles it: treat this warning as expected and non-blocking\n// if (existingGithubAuthIsValid) { proceed with manifest flow; ignore this warning }","preventionTips":["Check for an existing GitHub authentication configuration before launching the manifest setup","Run the manifest flow once; avoid re-submitting the callback","Decide on a single setup path (manifest auto-setup OR manual auth config)","Coordinate between admins to avoid concurrent setup runs"],"tags":["alm-integration","github","authentication","duplicate-config","logging"],"backgroundTag":"conflicting-config-options","analyzedSha":"184c821202192afc1c599fc912d0889b69fffa53","analyzedAt":"2026-09-09T12:23:51.573Z","contentChangedAt":"2026-09-09T12:23:51.573Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}