feature/controlled_access#423
Open
bwalsh wants to merge 4 commits into
Open
Conversation
Member
Author
|
@grsr One caveat: the checksum parameter file in the I've checked in a fix on this branch. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
controlled_accessfield toDrsObjectfor Passport-aligned authorization semantics See #422Summary
This PR introduces an optional
controlled_accessfield toDrsObjectandDrsObjectCandidateto explicitly represent object-level authorization requirements derived from GA4GH Passport visa claims.This enables clients to select and persist the intended authorization domain (e.g. dataset, project) when registering objects via
/objects/register.Motivation
The current write API allows clients to submit GA4GH Passports, but:
DrsObjectto persist authorization intentThis creates ambiguity in multi-project scenarios and reduces interoperability across DRS implementations.
Proposal
Add a new optional field:
Semantics
Each entry represents an authorization claim (typically derived from a GA4GH Passport visa)
Claims SHOULD follow URL-based semantics:
https://github.com/ga4gh-duri/ga4gh-duri.github.io/blob/master/researcher_ids/ga4gh_passport_v1.md#url-claims
If
controlled_accessis:Changes in this PR
Schema updates
Added
controlled_accessto:DrsObjectDrsObjectCandidate/objects/registerexamplesAdded examples demonstrating:
Response examples
Updated
201ObjectsCreatedto include:Example
Request
{ "candidates": [ { "name": "tumor-normal.cram", "controlled_access": [ "https://auth.example.org/datasets/phs000123" ] } ], "passports": ["<passport-jwt>"] }Response
{ "objects": [ { "id": "drs_obj_123", "controlled_access": [ "https://auth.example.org/datasets/phs000123" ] } ] }Use Cases
Backward Compatibility
This supports:
Design Notes
Open Questions
Addendum: Service Capability Advertisement via
/service-infoMotivation
While the
controlled_accessfield enables explicit object-level authorization semantics, clients also need a way to determine:Without this, clients must rely on out-of-band knowledge or trial-and-error.
Proposal
Extend the DRS-specific portion of
/service-infowith the following optional fields:Field Definitions
controlledAccessSupported(boolean)controlled_accessfieldtrue, clients MAY includecontrolled_accessin/objects/registerfalseor missing, clients SHOULD NOT rely on this featurecontrolledAccessClaimFormat(string)controlled_accessga4gh-passport-url-claimThis aligns with GA4GH Passport visa claim semantics.
controlledAccessDefault(string)controlled_accessCurrent value:
open-access-read→ Object is treated as open access for read operations
Benefits
/service-infoBackward Compatibility
Relationship to
controlled_accessFieldDrsObject.controlled_access/service-infofieldsClosing
This change makes authorization intent explicit, portable, and interoperable, while preserving backward compatibility and aligning with GA4GH Passport semantics. The service-info change complements the
controlled_accessfield by ensuring that clients can reliably detect and correctly use the feature across DRS implementations.🎯 Feedback very welcome, especially from implementers operating in federated or multi-tenant environments.