HPPR Ring2 Group Authentication

Tags: repo, auth

© R.A.Sol

Ring2 is group-based authentication. Signer authorization is based on membership in the target group. Ring2 requests use the Ring2 session envelope defined in 042.

Request Envelope

Ring2 uses:

Group: <target-group>
API: 🖧<COMMAND>
Key: <repo-name>/<session-id>
Seal-By: <member-verifier>

Rules:

Packet Families

Ring2 auth, membership, and policy are in separate packet families.

Auth Config

Coordinate: //<group>/admin/ring2//auth/|/seal/<repo-verifier>

Signed by repo verifier.

Required:

Optional:

Validation:

Members

Coordinate: //<group>/admin/members//root/|/seal/<verifier>

Multiple packets may exist under different signers and versions.

Required (at least one of):

Validation:

Policy

Coordinate: //<group>/admin/ring2//policy/|/seal/<repo-verifier>

Signed by repo verifier.

Required:

Validation:

ACL-Rule format and evaluation are defined in 050. Each ACL-Rule coordinate must start with //<group>/.

Adhoc Member Verifiers

Clients MAY derive a Ring2 member verifier locally from:

Rules:

Contextual form:

This is a client-side derivation convention only. Server behavior is unchanged.

Membership Config Detail

Supported headers in member packets:

Member

Adds one member verifier plus optional tags.

Member: <verifier> [<tags>...]

Member-Delegate

Delegates membership from another config source. Pipe separator | is required.

Member-Delegate: [<group>]|[<verifier>[/<tai>/<hash>]] [<mods>...]

Defaults:

Pinned form:

Modifier:

Tag modifiers:

Traversal is depth-first with max depth 8.

Watch/Reload Trigger Map

Packet coordinate Effect
//<group>/admin/ring2//auth/|/seal/<repo-verifier> reload Ring2 auth-config cache for <group>
//<group>/admin/members//root/|/seal/<verifier> reload group membership cache; revalidate active Ring2 WATCH subscribers for that group
//<group>/admin/ring2//policy/|/seal/<repo-verifier> reload ACL snapshot; apply ACL changes to active WATCH streams

Load and Evaluation Order

  1. parse the repository request envelope
  2. read auth config from //<group>/admin/ring2//auth/|/seal/<repo-verifier>
  3. resolve membership from //<group>/admin/members//root/|/seal/<verifier>
  4. verify member verifier; produce authenticated principal or enter non-member runtime path
  5. load policy from //<group>/admin/ring2//policy/|/seal/<repo-verifier>
  6. evaluate read / write / list per 050
  7. workflow packets under //<group>/admin/request//... are ordinary stored packets subject to policy, not auth-config state

🖧INGEST Ring2 Admission

🖧INGEST uses the submitted Seal’s signer as packet authority.

Validation:

  1. Payload must be a complete full top-level Seal.
  2. The embedded Plex Group selects the Ring2 group.
  3. The submitted Seal Seal-By must resolve through current Member / Member-Delegate expansion for that group.
  4. The Ring2 auth config must exist, be valid, and not be expired.
  5. The Ring2 policy must grant write on the exact submitted Seal coordinate: //<group>/<api>//<key>/|/seal/<seal-by>/<tai>/<seal-hash>.

Ring2 INGEST never uses the non-member runtime path and never falls back to Ring1 anyone ACL rules. A non-member signer is rejected even if public anyone policy would allow writing the target coordinate.

🖧MEMBERS

Returns expanded member list with tags.

Payload is a // URC.

Shorthand:

Response:

WATCH

WATCH events are filtered by list permission per 050. ACL changes to group auth, member, or policy packets take effect on active streams immediately. No reconnect needed.

Errors

Common Ring2 failures: