Skip to content

Consider moving the GitHub OAuth app to the ossf org, and revisiting the read:org scope #2890

Description

@norman-abramovitz

Registering a project last week, I stopped partway through the "log in with
GitHub" flow because the consent screen asked me to authorize a personal
account
rather than an OpenSSF-owned application. I completed the
registration with the email/password signup instead, which worked fine.

Having looked into both points since, neither is a defect and the program is
plainly legitimate — but both seem worth raising, because the consent screen is
where a security-conscious registrant is most likely to stop.

1. The OAuth app is registered to an individual rather than the ossf org

I understand the history — the badge began as the CII Best Practices Badge,
built by the same person, before OpenSSF existed. But the effect today is that
the authorization boundary is one individual's GitHub account, while the
branding, the domain, and the repository (ossf/best-practices-badge) are all
OpenSSF. A registrant comparing the consent screen against the site has no easy
way to reconcile those, and "the app asking for access isn't owned by the
organization it claims to represent" is precisely the pattern security guidance
tells people to treat with suspicion.

Would transferring the OAuth app to the ossf organization be feasible?

2. read:org is broader than the feature may still require

From config/initializers/omniauth.rb:

provider :github, ENV.fetch('GITHUB_KEY', nil), ENV.fetch('GITHUB_SECRET', nil),
         scope: 'user:email, read:org'

Both scopes are read-only, and I gather read:org is what lets the site
auto-verify that a user controls the project they are registering. That is a
genuinely useful feature.

The difficulty is that read:org is not scoped to the organization being
registered — it grants visibility into every organization the authorizing
account belongs to. For maintainers whose GitHub account also carries client or
employer org membership, that is a far larger grant than registering one
open-source project warrants, and it is likely to stop some of them at the
consent screen, as it stopped me.

Since the local-account path already supports registering and editing a project
without any GitHub grant at all, the auto-verification appears to be a
convenience rather than a requirement. Would it be possible either to narrow the
scope, or to request read:org only at the point where a user actually wants
control detection, rather than at first sign-in?


Neither point is urgent, and the email signup is a perfectly good workaround —
I used it and the registration went through without trouble. Mostly I wanted to
flag that the sign-in screen is a place where the more security-conscious
visitors may bail, which seems like an unfortunate filter for a program whose
purpose is encouraging exactly that mindset.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions