[java-idp-plugin-vci] 02/02: Instruct to require DPoP for HAIP cases
Codeberg
noreply at shibboleth.net
Fri Oct 2 11:09:46 UTC 2026
This is an automated email from the git hooks/post-receive script.
codeberg pushed a commit to branch main
in repository java-idp-plugin-vci.
View the commit online:
https://codeberg.org/Shibboleth/java-idp-plugin-vci/commit/a10eaeb12ee1f58a0edd4d5b51aa5f0721f4a693
commit a10eaeb12ee1f58a0edd4d5b51aa5f0721f4a693
Author: Janne Lauros <janne.lauros at csc.fi>
AuthorDate: Fri Oct 2 14:09:28 2026 +0300
Instruct to require DPoP for HAIP cases
---
README.md | 7 +++++--
docs/example/step-5/conf/relying-party.xml | 3 ++-
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index beb202d..735daa8 100644
--- a/README.md
+++ b/README.md
@@ -3400,7 +3400,8 @@ and both token and PAR endpoints take the Wallet Attestation:
+ p:includeIssuerInResponse="true" p:authorizeCodeLifetime="PT1M" />
+ <bean parent="OpenID.VCI.Token"
+ p:accessTokenClaimsSetManipulationStrategy-ref="openidvci.TokenManipulationStrategy"
-+ p:tokenEndpointAuthMethods="#{{'attest_jwt_client_auth'}}" />
++ p:tokenEndpointAuthMethods="#{{'attest_jwt_client_auth'}}"
++ p:requireDpopProof="true" />
+ <bean parent="OpenID.VCI.Credentials" />
+ <bean parent="OAUTH2.PAR" p:tokenEndpointAuthMethods="#{{'attest_jwt_client_auth'}}"
+ p:requestUriClaimsSetManipulationStrategy-ref="openidvci.PushedAuthorizationDPoPJktManipulationStrategy" />
@@ -3417,7 +3418,8 @@ Full file: [conf/relying-party.xml](docs/example/step-5/conf/relying-party.xml)
</details>
-DPoP settings are left to their defaults, so a DPoP nonce is required.
+`requireDpopProof` makes DPoP mandatory at the token endpoint, as HAIP requires sender-constrained
+access tokens. The other DPoP settings are left to their defaults, so a DPoP nonce is required.
`openidvci.PushedAuthorizationDPoPJktManipulationStrategy` on **OAUTH2.PAR** is recommended with
DPoP, see [RFC 9449 10.1](https://www.rfc-editor.org/rfc/rfc9449#section-10.1).
@@ -3785,6 +3787,7 @@ Endpoint `/idp/profile/openid/vci/token`, profile ID `http://geant.org/ns/profil
| `accessTokenClaimsSetManipulationStrategy` | Function | | Of the OP plugin. Must be **openidvci.TokenManipulationStrategy**. |
| `tokenEndpointAuthMethods` | Collection<String> | | Of the OP plugin. `none` for public wallets, `attest_jwt_client_auth` for Wallet Attestation. |
| `dpopProofNonceGenerator` | Function | | Of the OP plugin. `#{null}` for no DPoP nonce. |
+| `requireDpopProof` | Boolean | `false` | Of the OP plugin. Refuses a token request without a DPoP proof. |
| `inboundInterceptorFlows` | List<String> | | Interceptor flows run after the request is decoded, before authentication. |
| `outboundInterceptorFlows` | List<String> | | Interceptor flows run before the response is sent, also for an error response. |
| `messageHandler` | Function<MessageContext,Exception> | | Of the OP plugin. Runs on the inbound message before authentication and on the outbound one before encoding. |
diff --git a/docs/example/step-5/conf/relying-party.xml b/docs/example/step-5/conf/relying-party.xml
index 9391e3f..59ab352 100644
--- a/docs/example/step-5/conf/relying-party.xml
+++ b/docs/example/step-5/conf/relying-party.xml
@@ -99,7 +99,8 @@
p:includeIssuerInResponse="true" p:authorizeCodeLifetime="PT1M" />
<bean parent="OpenID.VCI.Token"
p:accessTokenClaimsSetManipulationStrategy-ref="openidvci.TokenManipulationStrategy"
- p:tokenEndpointAuthMethods="#{{'attest_jwt_client_auth'}}" />
+ p:tokenEndpointAuthMethods="#{{'attest_jwt_client_auth'}}"
+ p:requireDpopProof="true" />
<bean parent="OpenID.VCI.Credentials" />
<bean parent="OAUTH2.PAR" p:tokenEndpointAuthMethods="#{{'attest_jwt_client_auth'}}"
p:requestUriClaimsSetManipulationStrategy-ref="openidvci.PushedAuthorizationDPoPJktManipulationStrategy" />
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list