feat: support Interactive Authorization Flow#342
Merged
Conversation
…D4VP presentation
…n presentation request
…de entitlement claims
6 tasks
Oran-Dan
reviewed
Jun 12, 2026
Oran-Dan
reviewed
Jun 12, 2026
Oran-Dan
reviewed
Jun 12, 2026
Oran-Dan
reviewed
Jun 12, 2026
There was a problem hiding this comment.
Pull request overview
Adds OpenID4VCI 1.1 Interactive Authorization Flow support, allowing the AS to require an OpenID4VP presentation before issuing an authorization code (credential-gated issuance).
Changes:
- Introduces an interactive
/auth/parflow (initial request → OpenID4VP presentation request; follow-up → VP submission → authorization code). - Adds an
OpenId4VpPresentationServiceabstraction and averification-authorizationadapter delegating toagent_verification. - Extends authorization/issuance metadata and domain models to support interactive endpoints and OpenID4VP-related state.
Reviewed changes
Copilot reviewed 36 out of 37 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| infrastructure/adapters/verification-authorization/src/lib.rs | New adapter implementing OpenId4VpPresentationService using verification state. |
| infrastructure/adapters/verification-authorization/Cargo.toml | New crate manifest for the adapter. |
| Cargo.toml | Adds adapter crate to workspace; bumps OpenID4VC deps; adds mockall. |
| Cargo.lock | Locks updated deps for bumped OpenID4VC rev + mockall and adapter crate. |
| agent_verification/src/authorization_request/command.rs | Adds alternative_response_mode to create authorization requests. |
| agent_verification/src/authorization_request/aggregate.rs | Wires alternative_response_mode into OID4VP authorization request builder. |
| agent_store/src/lib.rs | Passes domain services into OAuth2 authorization request aggregate wiring. |
| agent_shared/src/config/mod.rs | Adds enable_interactive_authorization_flow configuration flag. |
| agent_shared/Cargo.toml | Formatting adjustment in dev-deps (no functional change). |
| agent_issuance/src/state.rs | Conditionally publishes interactive authorization metadata based on config. |
| agent_issuance/src/server_config/aggregate.rs | Updates issuer URL behavior and metadata endpoints (incl. interactive endpoint). |
| agent_holder/src/offer/aggregate.rs | Updates tests for new authorization_state(...) signature. |
| agent_authorization/src/services.rs | Adds OpenId4VpPresentationService + OAuth2 auth request domain services (+ mock default). |
| agent_authorization/src/domain/oauth2_authorization_request/views/mod.rs | Persists openid4vp_presentation in the view. |
| agent_authorization/src/domain/oauth2_authorization_request/event.rs | Extends created event with openid4vp_presentation. |
| agent_authorization/src/domain/oauth2_authorization_request/error.rs | Adds OpenID4VP creation/verification error variants. |
| agent_authorization/src/domain/oauth2_authorization_request/command.rs | Adds interaction_type + SubmitOpenId4VpResponse command. |
| agent_authorization/src/domain/oauth2_authorization_request/aggregate.rs | Implements interactive creation + VP submission path; stores presentation request JSON. |
| agent_authorization/src/domain/authorization_code/views/mod.rs | Adjusts redirect URI handling for Option<Url>. |
| agent_authorization/src/domain/authorization_code/event.rs | Makes redirect_uri optional in events. |
| agent_authorization/src/domain/authorization_code/command.rs | Makes redirect_uri optional in commands. |
| agent_authorization/src/domain/authorization_code/aggregate.rs | Propagates optional redirect URI through authorization code lifecycle + tests. |
| agent_authorization/src/application/pushed_authorization_service.rs | Sets interaction_type: None when creating OAuth2 auth requests via PAR. |
| agent_authorization/src/application/oauth2_authorization_service.rs | Creates auth code with redirect_uri: Some(...) under standard flow. |
| agent_authorization/src/application/mod.rs | Exposes new interactive_authorization_service module. |
| agent_authorization/src/application/interactive_authorization_service.rs | New interactive flow service (initial + follow-up). |
| agent_authorization/Cargo.toml | Adds optional mockall; extends test_utils feature to include it. |
| agent_application/src/lib.rs | Wires verification state + adapter into authorization state construction. |
| agent_application/Cargo.toml | Adds dependency on verification-authorization adapter crate. |
| agent_api_http/src/v0/verification/authorization_requests.rs | Passes alternative_response_mode: None into verification request creation. |
| agent_api_http/src/v0/issuance/credential_issuer/token_status_list.rs | Updates tests for new authorization_state(...) signature. |
| agent_api_http/src/v0/issuance/credential_issuer/notification.rs | Updates tests for new authorization_state(...) signature. |
| agent_api_http/src/v0/issuance/credential_issuer/credential.rs | Updates tests for new authorization_state(...) signature. |
| agent_api_http/src/v0/authorization/authorization_server/token.rs | Updates tests for new authorization_state(...) signature. |
| agent_api_http/src/v0/authorization/authorization_server/par.rs | Extends /auth/par to dispatch between PAR + interactive init + interactive follow-up. |
| agent_api_http/src/v0/authorization/authorization_server/authorize.rs | Updates tests for new authorization_state(...) signature. |
| agent_api_http/Cargo.toml | Adds dependency on verification-authorization adapter crate. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Oran-Dan
approved these changes
Jun 16, 2026
daniel-mader
approved these changes
Jun 16, 2026
|
🎉 This PR is included in version 1.0.0-beta.19 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
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.
Description of change
Interactive Authorization Flow (OpenID4VCI 1.1)
Overview
Adds support for the Interactive Authorization Flow as defined in OpenID4VCI 1.1. When enabled, the authorization server can request an OpenID4VP presentation from the wallet before issuing an authorization code, enabling credential-gated issuance.
Key Changes
InteractiveAuthorizationService— handles the two-step interactive flow: initial request (returns an OpenID4VP presentation request) and follow-up (submits the VP response, returns an authorization code)./auth/parendpoint extended — now dispatches between standard PAR, interactive authorization requests, and follow-up requests via anAuthorizationRequestDtoenum.OpenId4VpPresentationServicetrait — abstraction for creating/verifying OpenID4VP requests, withmockallsupport for testing.verification-authorizationinfrastructure adapter — implementsOpenId4VpPresentationServiceby delegating to the agent_verification domain.Important Notes
enable_interactive_authorization_flowconfiguration variable (defaults tofalse).VerificationAuthorizationAdapterrequestingeduIDandEntitlementcredentials with specific claims (e.g.name,email,eduperson_scoped_affiliation,entitlement). This should be made configurable by the client in a follow-up.#[ignore]d pending holder-state test infrastructure improvements.Links to any relevant issues
How the change has been tested
Manually tested, for more details, see: https://github.com/impierce/ssi-agent-integration-server
Definition of Done checklist
Add an
xto the boxes that are relevant to your changes.