-
Notifications
You must be signed in to change notification settings - Fork 16
task1: RP intermediary use case #118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
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
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
141 changes: 141 additions & 0 deletions
141
task1-use-cases/subtask1-2-trust-registry/relying-party-intermediary-use-case.md
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,141 @@ | ||
| # Use Case UC-RPI-01: Relying Party Intermediary | ||
|
|
||
| ## Scope | ||
|
|
||
| An **Intermediary** is a Relying Party that requests attribute presentation from a Wallet Unit **on behalf of** another registered Relying Party (the **intermediated RP**). Typical examples: identity/interop gateways, sector platforms, or SaaS verifiers that serve multiple service providers. | ||
|
|
||
| This use case covers registration, intermediated remote presentation (OpenID4VP), and wallet-side trust evaluation. Protocol details and JSON examples: [RPI OpenID4VP technical report](../../task2-trust-framework/rp-intermediary-openid4vp-technical-report.md). | ||
|
|
||
| ## Actors | ||
|
|
||
| | Actor | Role | | ||
| | ----- | ---- | | ||
| | **Intermediary** | Registers as RP with `isIntermediary`; holds **WRPAC**; sends presentation requests | | ||
| | **Intermediated RP** | Registered at a Registrar; may hold **WRPRC** per intended use; instructs intermediary what to request | | ||
| | **Registrar** | Registers both parties; records `usesIntermediary` relationship (RPI_04) | | ||
| | **Access CA / WRPRC Provider** | Issues WRPAC to intermediary; WRPRC to intermediated RP | | ||
| | **Wallet Unit** | Authenticates intermediary; displays both identities; evaluates intermediated RP entitlements | | ||
| | **Holder (User)** | Approves or denies presentation | | ||
|
|
||
| ## Goal | ||
|
|
||
| - **Business**: Allow service providers to use a trusted third-party verifier without each holding a direct wallet connection, while keeping the User informed of **both** the technical caller and the service consuming the data. | ||
| - **Technical**: Intermediary authenticates with its WRPAC; intermediated RP identity and authorisation travel in `verifier_info`; wallet validates both per ARF Topic 52. | ||
|
|
||
| ## Scenarios | ||
|
|
||
| | ID | Scenario | Intermediated? | | ||
| | -- | -------- | -------------- | | ||
| | **S1** | Interop gateway requests PID for a cinema booking service | Yes | | ||
| | **S2** | Intermediary requests attributes for its **own** service | No (direct RP) | | ||
|
|
||
| ### S1 — Intermediated presentation (primary) | ||
|
|
||
| **Example:** *VerifyNow* (intermediary) requests age verification on behalf of *Example Cinema Ltd.* (intermediated RP). | ||
|
|
||
| **Preconditions** | ||
|
|
||
| - Intermediary registered with `isIntermediary: true` and valid **WRPAC**. | ||
| - Intermediated RP registered; intended use and optional **WRPRC** issued; `usesIntermediary` points to the intermediary (RPI_04). | ||
| - Intermediated RP provided the intermediary with: trade name, identifier, Registrar URL, intended-use id, attribute list, optional WRPRC reference (RPI_05). | ||
|
|
||
| **Main flow** | ||
|
|
||
| ```mermaid | ||
| sequenceDiagram | ||
| participant IRP as Intermediated RP | ||
| participant INT as Intermediary | ||
| participant W as Wallet Unit | ||
| participant U as User | ||
|
|
||
| IRP->>INT: Request attributes (RPI_05 metadata) | ||
| INT->>W: OpenID4VP Request Object<br/>(INT WRPAC + IRP verifier_info) | ||
| W->>W: Detect intermediation (RPI_07)<br/>Validate INT WRPAC + IRP WRPRC/registry | ||
| W->>U: Show Intermediated RP names + ask user for consent | ||
| U->>W: Approve or deny | ||
| W->>INT: Authorization Response (response_uri) | ||
| INT->>IRP: Forward attributes (RPI_08/09) | ||
| INT->>INT: delete attributes after use (RPI_10) | ||
| ``` | ||
|
|
||
| 1. Intermediated RP instructs the intermediary (RPI_05). | ||
| 2. Intermediary builds and signs the OpenID4VP Request Object with its **WRPAC**; includes intermediated RP `registrar_dataset` and optional `registration_cert` in `verifier_info` (RPI_06, RPRC_19a). | ||
| 3. Wallet detects an intermediated presentation when WRPAC `organizationIdentifier` ≠ `registrar_dataset.identifier` (RPI_07). | ||
| 4. Wallet validates intermediary WRPAC (Access CA TL) and intermediated RP WRPRC/registry entitlements ([UC-TE-04](wallet-unit-evaluates-relying-party.md)). | ||
| 5. Wallet displays **both** trade names; User approves (RPA_07). | ||
| 6. If User opted to verify registration, Wallet checks intermediary–RP relationship via WRPRC `intermediary` field (RPRC_04) or Registrar API (RPI_07a). | ||
| 7. Wallet sends response to intermediary `response_uri`; intermediary forwards to intermediated RP. | ||
|
|
||
| **Postconditions (success)** | ||
|
|
||
| - The wallet does not display the information of the intermediary and its Service to the User before asking for consent. Only the information of the intermediated RP are shown. The intermediary name and service are logged by the Wallet Unit. | ||
| - Attributes disclosed only match intermediated RP registered entitlements (RPRC_21). | ||
| - Intermediary deletes received credentials immediately after forwarding (RPI_10). | ||
|
|
||
| ### S2 — Intermediary as direct Relying Party | ||
|
|
||
| An entity registered as intermediary may also act **in its own capacity** (RPI_01 note c): WRPAC and `verifier_info` refer to the **same** party. Flow matches [UC-TE-04](wallet-unit-evaluates-relying-party.md) without dual-identity handling. | ||
|
|
||
| ## Onboarding (summary) | ||
|
|
||
| Both the Intermediary and the Intermediated RP are considered RP. The onboarding process shall follow the detailed steps in: [Relying Party Onboarding](../subtask1-1-onboarding/relying_party_onboarding.md). | ||
| The following table highlight the on-boarding step differences between Intermediary and Intermediated RP | ||
| | Step | Intermediary | Intermediated RP | | ||
| | ---- | ------------ | ---------------- | | ||
| | Register | As RP with `isIntermediary: true` (RPI_01, Reg_26) | At Registrar in establishment MS (RPI_03) | | ||
| | Relationship | — | Provide evidence of intermediary use; Registrar sets `usesIntermediary` (RPI_04) | | ||
| | Certificates | **WRPAC** (mandatory); own WRPRC only for direct use (S2) | **WRPRC** per intended use; includes `intermediary` association (RPRC_04) | | ||
| | Registry API | May register intended uses on behalf of WRP ([TS5 notes](../../task5-participants-certificates-policies/ts5-registry-api-and-data-formats.md)) | — | | ||
|
|
||
| **Note:** Intermediated RPs do **not** need a WRPAC (ARF §6.6.5). | ||
|
|
||
| ## Wallet evaluation checklist | ||
|
|
||
| | Check | Source | Applies to | | ||
| | ----- | ------ | ---------- | | ||
| | WRPAC chain + revocation | Access CA TL | Intermediary | | ||
|
peppelinux marked this conversation as resolved.
|
||
| | Intermediation Detection | WRPAC from intermediary differs from verifier_info | Both| | ||
| | Request Object Signature | public key contained in x5c | Intermediary | | ||
| | WRPAC chain + revocation | Access CA TL | Intermediary | | ||
| | WRPRC signature + entitlements | WRPRC Provider TL / registry | Intermediated RP | | ||
| | Requested attributes ⊆ registered | RPRC_21 | Intermediated RP | | ||
| | Only Intermediated RP displayed | RPI_07 | Intermediated RP| | ||
| | Relationship registered | 6.6.5 ARF | Intermediary ↔ Intermediated RP | | ||
| | EDP (if present) | EDP_02/03 | Evaluate against **intermediated** RP id/root, not intermediary WRPAC | | ||
|
|
||
| ## Success criteria | ||
|
|
||
| - Intermediary authenticated via valid WRPAC. | ||
| - Intermediated RP identity and entitlements verified (WRPRC or registry). | ||
| - User informed only of Intermediated RP informations before consent. | ||
| - Intermediated transaction does not expose intermediary WRPRC in `verifier_info`. | ||
|
|
||
| ## ARF requirements (key) | ||
|
|
||
| | ID | Summary | | ||
| | -- | ------- | | ||
| | RPI_01 | Intermediary registers as RP; obtains WRPAC | | ||
| | RPI_03 | Intermediary registers each intermediated RP | | ||
| | RPI_04 | Registrar verifies and records intermediary relationship | | ||
| | RPI_05 | Intermediated RP supplies request metadata to intermediary | | ||
| | RPI_06 | Intermediary sends request with own WRPAC + IRP data/WRPRC | | ||
| | RPI_07 | Wallet detects and displays only intermediated RP identity | | ||
| | Topic 52 | Wallet verifies registered relationship when User requests | | ||
| | RPI_08–10 | Forwarding, verification, immediate deletion by intermediary | | ||
| | RPRC_04 | Intermediated WRPRC contains intermediary association | | ||
|
|
||
| Full matrix: [Trusted List / Registration / Trust Evaluation Matrix](../../task2-trust-framework/trusted-list-registration-trust-evaluation-matrix.md) §7. | ||
|
|
||
| ## Out of scope (this use case) | ||
|
|
||
| - Proximity presentation (ISO 18013-5 / TS 119 472-2 clause 5.3) — see technical report §12 | ||
| - Architecture-group implementation scenario variants ([architecture PR #31](https://github.com/webuild-consortium/architecture/pull/31)) | ||
|
|
||
| ## References | ||
|
|
||
| - [Consolidated Terms — Intermediary](../terms-and-entities.md#316-intermediary) | ||
| - [RPI OpenID4VP technical report](../../task2-trust-framework/rp-intermediary-openid4vp-technical-report.md) | ||
| - [EUDI Wallet Trust and Entitlement Discovery](../../task2-trust-framework/eudi-wallet-trust-and-entitlement-discovery.md) | ||
| - [WRPRC Example 3 — With Intermediary](../../task5-participants-policies/relying_party_registration_certificate.md) | ||
| - [Embedded Disclosure Policies](../../task5-participants-policies/embedded-disclosure-policies-implementation.md) | ||
| - [ARF Topic 52 — Relying Party intermediaries](https://eudi.dev/2.9.0/annexes/annex-2/annex-2.02-high-level-requirements-by-topic/#a2330-topic-52-relying-party-intermediaries) | ||
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
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
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
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.