Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Github auth is requested even if we chose as auth provider: guest #1243

Open
cmoulliard opened this issue May 8, 2024 · 3 comments
Open
Labels
jira Sync this issue with Jira kind/bug Something isn't working status/triage

Comments

@cmoulliard
Copy link

cmoulliard commented May 8, 2024

Describe the bug

There is an auth issue as backstage requires to be authenticated using Github when we open the Component view - see screenshot.

Expected Behavior

No github auth should be requested

What are the steps to reproduce this bug?

git clone https://github.com/janus-idp/backstage-showcase; cd backstage-showcase 
yarn install
yarn export-dynamic -- -- --dev
mkdir dynamic-plugins-root/_notused
cd dynamic-plugins-root
mv backstage-plugin-azure-devops _notused
mv backstage-plugin-azure-devops-backend-dynamic _notused
mv backstage-plugin-scaffolder-backend-module-azure-dynamic _notused
  • Create the app-config.local.yaml file using the following code Remark: Replace the xxxxxxxxxxxxx with your Github Access token.
cat <<EOF > app-config.local.yaml
organization:
  name: Quarkus Org

integrations:
  gitlab:
    - host: gitlab.com
  github:
    - host: github.com
      token: xxxxxxxxxxxxx

proxy:
  skipInvalidProxies: true
  endpoints:
    '/argocd/api':
      target: https://openshift-gitops-server-openshift-gitops.apps.qshift.snowdrop.dev/api/v1/
      changeOrigin: true
      secure: false
      headers:
        Cookie:
          $env: "argocd.token=eyJhbGciOiJIUz..EktDnyZbQA="

auth:
  environment: development
  providers:
    guest: {}

catalog:
  import:
    entityFilename: catalog-info.yaml
  rules:
    - allow: [Template,Location,Component,System,Resource,User,Group,Api]
  locations:
    - type: url
      target: https://github.com/ch007m/qshift-templates/blob/static-lists/qshift/all.yaml
      rules:
        - allow: [Template,Location,Component,System,Resource,User,Group,Api]

  providers:
    ocm:
      env:
        kubernetesPluginRef: ocp-qshift

argocd:
  baseUrl: https://openshift-gitops-server-openshift-gitops.apps.qshift.snowdrop.dev
  username: admin
  password: hU5ksdnFxK1qiH9gflR6jZIbz7BGQDEX
  appLocatorMethods:
    - type: config
      instances:
        - name: argocdQShift
          url: https://openshift-gitops-server-openshift-gitops.apps.qshift.snowdrop.dev

kubernetes:
  serviceLocatorMethod:
    type: 'multiTenant'
  clusterLocatorMethods:
    - type: 'config'
      clusters:
        - url: https://api.qshift.snowdrop.dev:6443 # https://kubernetes.default.svc
          name: ocp-qshift
          skipTLSVerify: true
          authProvider: 'serviceAccount'
          skipMetricsLookup: true
          serviceAccountToken: eyJhbGciOiJ...JZ0JU3GHV00--Eqp0xNi6Xv9Ih8ucTkQw2vnBm20
customResources:
    - group: 'tekton.dev'
      apiVersion: 'v1'
      plural: 'pipelineruns'
    - group: 'tekton.dev'
      apiVersion: 'v1'
      plural: 'taskruns'
    - apiVersion: 'v1'
      group: 'route.openshift.io'
      plural: 'routes'
  
## Content hereafter is coming from the file: app-config.dynamic-plugins.yaml
dynamicPlugins:
  frontend:
    backstage.plugin-azure-devops:
      mountPoints:
        - mountPoint: entity.page.ci/cards
          importName: EntityAzurePipelinesContent
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isAzureDevOpsAvailable
        - mountPoint: entity.page.pull-requests/cards
          importName: EntityAzurePullRequestsContent
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isAzureDevOpsAvailable
    backstage.plugin-dynatrace:
      mountPoints:
        - mountPoint: entity.page.monitoring/cards
          importName: DynatraceTab
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isDynatraceAvailable
    backstage.plugin-github-actions:
      mountPoints:
        - mountPoint: entity.page.ci/cards
          importName: EntityGithubActionsContent
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isGithubActionsAvailable
    backstage.plugin-github-issues:
      mountPoints:
        - mountPoint: entity.page.issues/cards
          importName: GithubIssuesCard
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - hasAnnotation: github.com/project-slug
    backstage.plugin-jenkins:
      mountPoints:
        - mountPoint: entity.page.ci/cards
          importName: EntityJenkinsContent
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isJenkinsAvailable
    backstage.plugin-kubernetes:
      mountPoints:
        - mountPoint: entity.page.kubernetes/cards
          importName: EntityKubernetesContent
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              anyOf:
                - hasAnnotation: backstage.io/kubernetes-id
                - hasAnnotation: backstage.io/kubernetes-namespace
    backstage.plugin-lighthouse:
      appIcons:
        - name: lighthouse
          importName: LighthouseIcon
      dynamicRoutes:
        - path: /lighthouse
          importName: LighthousePage
          menuItem:
            icon: lighthouse
            text: Lighthouse
      mountPoints:
        - mountPoint: entity.page.overview/cards
          importName: EntityLastLighthouseAuditCard
          config:
            layout:
              gridColumnEnd:
                md: "span 6"
                xs: "span 12"
            if:
              allOf:
                - isLighthouseAvailable
    pagerduty.backstage-plugin:
      mountPoints:
        - mountPoint: entity.page.overview/cards
          importName: EntityPagerDutyCard
          config:
            layout:
              gridColumnEnd:
                md: "span 6"
                xs: "span 12"
            if:
              allOf:
                - isPluginApplicableToEntity
    backstage.plugin-sonarqube:
      mountPoints:
        - mountPoint: entity.page.overview/cards
          importName: EntitySonarQubeCard
          config:
            layout:
              gridColumnEnd:
                lg: "span 4"
                md: "span 6"
                xs: "span 12"
            if:
              allOf:
                - isSonarQubeAvailable
    immobiliarelabs.backstage-plugin-gitlab:
      mountPoints:
        - mountPoint: entity.page.overview/cards
          importName: EntityGitlabMergeRequestStatsCard
          config:
            layout:
              gridColumnEnd:
                lg: "span 4"
                md: "span 6"
                xs: "span 12"
            if:
              allOf:
                - isGitlabAvailable
        - mountPoint: entity.page.ci/cards
          importName: EntityGitlabPipelinesTable
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isGitlabAvailable
        - mountPoint: entity.page.issues/cards
          importName: EntityGitlabIssuesTable
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isGitlabAvailable
        - mountPoint: entity.page.pull-requests/cards
          importName: EntityGitlabMergeRequestsTable
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isGitlabAvailable
    janus-idp.backstage-plugin-acr:
      mountPoints:
        - mountPoint: entity.page.image-registry/cards
          importName: AcrPage
          config:
            layout:
              gridColumn: 1 / -1
            if:
              anyOf:
              - isAcrAvailable
    janus-idp.backstage-plugin-jfrog-artifactory:
      mountPoints:
        - mountPoint: entity.page.image-registry/cards
          importName: JfrogArtifactoryPage
          config:
            layout:
              gridColumn: 1 / -1
            if:
              anyOf:
              - isJfrogArtifactoryAvailable
    janus-idp.backstage-plugin-nexus-repository-manager:
      mountPoints:
        - mountPoint: entity.page.image-registry/cards
          importName: NexusRepositoryManagerPage
          config:
            layout:
              gridColumn: 1 / -1
            if:
              anyOf:
              - isNexusRepositoryManagerAvailable
    janus-idp.backstage-plugin-ocm:
      appIcons:
        - name: ocmIcon
          importName: OcmIcon
      dynamicRoutes:
        - path: /ocm
          importName: OcmPage
          menuItem:
            icon: ocmIcon
            text: Clusters
      mountPoints:
        - mountPoint: entity.page.overview/context
          importName: ClusterContextProvider
        - mountPoint: entity.page.overview/cards
          importName: ClusterAvailableResourceCard
          config:
            layout:
              gridColumnEnd:
                lg: "span 4"
                md: "span 6"
                xs: "span 12"
            if:
              allOf:
              - isKind: resource
              - isType: kubernetes-cluster
        - mountPoint: entity.page.overview/cards
          importName: ClusterInfoCard
          config:
            layout:
              gridColumnEnd:
                lg: "span 4"
                md: "span 6"
                xs: "span 12"
            if:
              allOf:
              - isKind: resource
              - isType: kubernetes-cluster
    janus-idp.backstage-plugin-quay:
      mountPoints:
        - mountPoint: entity.page.image-registry/cards
          importName: QuayPage
          config:
            layout:
              gridColumn: 1 / -1
            if:
              anyOf:
              - isQuayAvailable
    janus-idp.backstage-plugin-tekton:
      mountPoints:
        - mountPoint: entity.page.ci/cards
          importName: TektonCI
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isTektonCIAvailable
    janus-idp.backstage-plugin-topology:
      mountPoints:
        - mountPoint: entity.page.topology/cards
          importName: TopologyPage
          config:
            layout:
              gridColumn: "1 / -1"
              height: 75vh
            if:
              anyOf:
                - hasAnnotation: backstage.io/kubernetes-id
                - hasAnnotation: backstage.io/kubernetes-namespace
    roadiehq.backstage-plugin-argo-cd:
      mountPoints:
        - mountPoint: entity.page.overview/cards
          importName: EntityArgoCDOverviewCard
          config:
            layout:
              gridColumnEnd:
                lg: "span 8"
                xs: "span 12"
            if:
              allOf:
                - isArgocdAvailable
        - mountPoint: entity.page.cd/cards
          importName: EntityArgoCDHistoryCard
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isArgocdAvailable
    roadiehq.backstage-plugin-datadog:
      mountPoints:
        - mountPoint: entity.page.monitoring/cards
          importName: EntityDatadogContent
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isDatadogAvailable
    roadiehq.backstage-plugin-github-insights:
      mountPoints:
        - mountPoint: entity.page.overview/cards
          importName: EntityGithubInsightsComplianceCard
          config:
            layout:
              gridColumnEnd:
                lg: "span 4"
                md: "span 6"
                xs: "span 12"
            if:
              allOf:
                - isGithubInsightsAvailable
    roadiehq.backstage-plugin-github-pull-requests:
      mountPoints:
        - mountPoint: entity.page.overview/cards
          importName: EntityGithubPullRequestsOverviewCard
          config:
            layout:
              gridColumnEnd:
                lg: "span 4"
                md: "span 6"
                xs: "span 12"
            if:
              allOf:
                - isGithubPullRequestsAvailable
        - mountPoint: entity.page.pull-requests/cards
          importName: EntityGithubPullRequestsContent
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isGithubPullRequestsAvailable
    roadiehq.backstage-plugin-jira:
      mountPoints:
        - mountPoint: entity.page.issues/cards
          importName: EntityJiraOverviewCard
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isJiraAvailable
    roadiehq.backstage-plugin-security-insights:
      mountPoints:
        - mountPoint: entity.page.overview/cards
          importName: EntityDependabotAlertsCard
          config:
            layout:
              gridColumnEnd:
                lg: "span 4"
                md: "span 6"
                xs: "span 12"
            if:
              allOf:
                - isSecurityInsightsAvailable
    backstage.plugin-techdocs:
      routeBindings:
        targets:
          - importName: techdocsPlugin
        bindings:
          - bindTarget: catalogPlugin.externalRoutes
            bindMap:
              viewTechDoc: techdocsPlugin.routes.docRoot
          - bindTarget: scaffolderPlugin.externalRoutes
            bindMap:
              viewTechDoc: techdocsPlugin.routes.docRoot
      dynamicRoutes:
        - path: /docs
          importName: TechDocsIndexPage
          menuItem:
            icon: docs
            text: Docs
        - path: /docs/:namespace/:kind/:name/*
          importName: TechDocsReaderPage
      mountPoints:
        - mountPoint: entity.page.docs/cards
          importName: EntityTechdocsContent
          config:
            layout:
              gridColumn: "1 / -1"
            if:
              allOf:
                - isTechDocsAvailable
        - mountPoint: search.page.results
          importName: TechDocsSearchResultListItem
        - mountPoint: search.page.filters
          importName: TechdocsSearchFilter
        - mountPoint: search.page.types
          importName: techdocsSearchType
          config:
            props:
              name: Documentation
              icon: docs
    backstage.plugin-tech-radar:
      apiFactories:
        - importName: TechRadarApi
      appIcons:
        - name: techRadar
          importName: TechRadarIcon
      dynamicRoutes:
        - path: /tech-radar
          importName: TechRadarPage
          menuItem:
            icon: techRadar
            text: Tech Radar
          config:
            props:
              width: 1500
              height: 800
    janus-idp.backstage-plugin-analytics-provider-segment:
      apiFactories:
        - importName: SegmentAnalyticsApi
EOF
  • Launch backstage front and backend using:
export NODE_OPTIONS=--no-node-snapshot
yarn start

Screenshot 2024-05-08 at 09 44 08

Versions of software used and environment

@cmoulliard cmoulliard added kind/bug Something isn't working status/triage labels May 8, 2024
@github-actions github-actions bot added the jira Sync this issue with Jira label May 8, 2024
@cmoulliard cmoulliard changed the title Github auth is requested even if we chosend as auth provider: guest Github auth is requested even if we chose as auth provider: guest May 16, 2024
@cmoulliard
Copy link
Author

According to @gashcrumb => "This popup occurs as we're using a component that's trying to fetch data from github on the overview page."

@cmoulliard
Copy link
Author

Same behavior observed too using the PR image - #1253 (comment)

@gashcrumb
Copy link
Member

Think this is by design for this particular github plugin, but probably we could add a conditional to the default config for these that hides the component if the current user is user:development/guest

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
jira Sync this issue with Jira kind/bug Something isn't working status/triage
Projects
None yet
Development

No branches or pull requests

2 participants