Skip to content

Building on the M5 deliverable, provide a JSON-level standalone validator endpoint for any implementer to test against #21

Description

@mickenordin
No description provided.

Activity

  1. moved this from Backlog to In progress in SovereignTech Funded Activitieson May 21, 2026
  2. MahdiBaghbani commented on May 21, 2026

    @MahdiBaghbani
    Member

    Here is the full set of PRs behind M9, grouped by what each part actually does and then by platform. GitHub expands the links to their titles, so I kept the notes short. The earlier work sits at the bottom since it is related but not part of the M9 contract.

    Milestone 9

    The validator itself: the web UI and the Go backend that serves the JSON validation endpoint.

    ocm-web-site (validator UI)
    opencloudmesh-go (backend and JSON endpoint)

    Build and test plumbing

    Packaging and end to end tests that back the validator, plus the ocmgo cells in the shared test suite.

    opencloudmesh-go
    ocm-test-suite

    Upstream OCM fixes the active test needed

    These live in other people's servers. The active flow only runs end to end once they merged, so I'm listing them as supporting work rather than M9 itself.

    Reva
    OpenCloud
    Nextcloud

    OCM-API spec alignment

    The spec I validate against, kept in sync while building the validator.

    Done as part of this milestone but not directly related to the contract

    Earlier work on the site and the Go reference server. Related, but it predates the M9 validator contract.

    ocm-web-site
    opencloudmesh-go

    Still open upstream

    A few more fixes on the same push that are not merged yet, so I'm not counting them as evidence, just noting they are in flight.

    Reva
    ownCloud (oCIS and Reva fork)
    CERNBox

    If any of these sit in the wrong group, let me know and I'll move them.

  3. MahdiBaghbani commented on Sep 14, 2026

    @MahdiBaghbani
    Member

    A walk through of the validator, screen by screen. Passive first, which needs no account on the target, then the full active flow. The validator watches and grades each area rather than blocking, so an overall "failed" still comes with a full per-area breakdown.

    Landing and entry

    The OpenCloudMesh site

    The public site. The validator lives under the Validator link in the top nav.

    Image

    The "Check a server" form

    You give it a host and pick the mode. Active is left unchecked here, so this run is passive only. It also says up front that results are informational, not a certification.

    Image

    Passive test

    Step P1 - Passive report

    Four of the eight areas run without an account. Secure connection passes, request signing fails, and discovery and signing keys come back needing attention. The share and token areas stay untested, since passive mode never runs the live flow.

    Signing keys warn because the target does not publish a JWKS URL in discovery, so there are no keys to check. Request signing is the hard fail: the target does not advertise HTTP-signature support, so the validator cannot confirm it verifies inbound signatures.

    Image

    Step P2 - Server discovery

    Opening the discovery area. The validator did an uncached GET on /.well-known/ocm and wants a proper 200 JSON document back, with enabled, apiVersion, endPoint, and resourceTypes.

    The warning is mostly the version: the target advertises OCM 1.2.0 while the validator pins 1.4.0. That is a soft warn, not a rejection, since it consumes by capability at call time rather than doing a version handshake.

    Image

    Active test

    Step A1 - Validator creates an invitation

    The active run starts. The validator mints its own OCM invitation and shows the token for me to accept on the target.

    Image

    Step A2 - The target side

    Signed in to the target OpenCloud. The Personal space is empty, and ScienceMesh in the app list confirms OCM is enabled here.

    Image

    Step A3 - Accept the invitation on the target

    Pasting the validator's token into the target's Invitations app. It resolves the institution back to the validator, with no connections yet.

    Image

    Step A4 - Connection registered

    Accept worked. The target now lists Session Inviter as a federated connection.

    Image

    Step A5 - Waiting for the return invitation

    The validator flips to the reverse direction and waits for an invitation coming back from the target.

    Image

    Step A6 - Target generates its invitation

    On the target I generate a new invitation, described "Test Validator", to hand back.

    Image

    Step A7 - Return invitation pasted back

    That return token goes into the validator, ready to submit and close the trust both ways.

    Image

    Step A8 - Both directions connected

    Both connections now show on the target, so the two-way invite handshake is done.

    Image

    Step A9 - Forward share, waiting to open

    The sharing phase. The validator has shared a file out and waits for me to open it on the target.

    Image

    Step A10 - Forward share arrives

    hello-ocm.txt shows up under "Shared with me" on the target, so the forward share landed.

    Image

    Step A11 - Forward file opens

    Opening it on the target renders the content, so the peer served the bytes and the forward share reads end to end.

    Image

    Step A12 - Waiting for the reverse share

    Roles switch. The validator now waits for the target to share a file back, and times out if nothing comes.

    Image

    Step A13 - Target creates a file

    On the target I create Share to validator.txt as the file to send back.

    Image

    Step A14 - Give it some content

    A quick edit so the file has real content before it goes out.

    Image

    Step A15 - Share it back

    Sharing it back to Session Inviter with Can view. This is the reverse OCM share.

    Image

    Step A16 - Reverse share confirmed

    The target lists it as Shared with Session Inviter, no public link involved.

    Image

    Step A17 - Final report

    Share exchange and capabilities pass, discovery and signing keys warn, and request signing fails because the target does not advertise HTTP-signature support, so the validator cannot confirm it verifies inbound RFC 9421 signatures. Notifications and access tokens weren't exercised. The suggestion is to turn on inbound RFC 9421 verification and finish the discovery and JWKS advertising.

    Image
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions