OWASP / OWASP/OpenCRE

Provide Trusted Contributors with the ability to import data in opencre.org

Open
#194 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
180
Forks
137
Avg merge
3d 23h
Merged PRs (30d)
21

Description

Status: Blocked — Auth Work v2

This issue is not ready for implementation. Maintainer direction is to sequence trusted-contributor import capabilities after the auth foundation and role model land. Do not assign or start implementation work against this issue until the dependencies below are complete.

Dependency chain (in order)
  1. Auth foundation (v1) — Stable, persistent user identity and OAuth session contract per the User Authentication and MyOpenCRE RFC (merged in #876). Track implementation via:

    • #963 — migrate OAuth routes to /rest/v1/auth/*
    • #943 — frontend useUser hook and header auth UX
    • #949GET /api/capabilities feature-flag contract
    • #966 — auth-wrap MyOpenCRE CSV import (deprecate anonymous import)
  2. Roles (Auth v2) — Extend auth with a role model that introduces the concept of a trusted contributor (distinct from anonymous users and from full maintainers). Role assignment, enforcement, and admin UX are part of this step; no issue number yet — design alongside auth v1 completion.

  3. Trusted-contributor capabilities (this issue) — Once (1) and (2) are done, grant trusted contributors access to:

Blocked until: auth v1 (#963 and related) and the roles/trusted-contributor model are implemented and deployed.


Background

What is the issue?

Currently, new data in opencre.org can be inputted by way of a code-maintainer running an import script. This is inefficient as it greatly restricts who can import data and forces a hard coupling between code maintainers and data authors.

Expected behaviour

Data authors who are trusted contributors should have a strongly authenticated UI which allows them to easily mass-import data into opencre.org. They should also be given the freedom to either manipulate or replace individual mappings. However, special care should be taken to preserve CRE immutability.

Possible implementations (deferred — revisit after Auth v2)
Admin panel connected to an IdP

There is an admin page which uses OpenID Connect and an external identity provider (e.g. Okta) to authenticate a data author. Data authors could provide an email address which, when added to an identity provider solution, gives them access to said admin panel. From there they can provide the URL of a spreadsheet that fits the mapping template and the backend runs the equivalent of python cre.py --add --from-spreadsheet <url>.

Pros: industry-standard solution; on-prem users can hook their own IdP.

Cons: needs an external IdP solution; maintenance burden.

Note: With Auth v1 using Google OAuth and a future trusted-contributor role model, the IdP approach above may be superseded or narrowed. Re-evaluate implementation options once dependencies (1)–(2) are complete.

Related

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Do not start until auth v1 (#963 and related work) and the trusted-contributor role model are deployed. Read docs/rfc/user-auth-myopencre.md, docs/rfc/cheatsheets-llm-autonomous-mapping-rfc.md, and the existing python cre.py --add --from-spreadsheet <url> flow. Done means trusted contributors have authenticated import access for MyOpenCRE and GSoC ingestion while CRE immutability is preserved.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
authentication, backend-api-design, data
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.