-
Notifications
You must be signed in to change notification settings - Fork 20
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
Wallet Instance Attestation and oauth-attestation-based-client-authentication #33
Comments
It is a requirement for some credentials (for example the PID, or in general all credentials of type 1 I would say). For other credentials is overkill. Assuming that we must consider at least a PID for the wallet activation, the wallet solution must support this security mechanisms. |
Yes. We design it based on the simple assertion based client authentication method RFC7521 as in our case we are genrating new keys for DPoP. If we arre foing to conaider this method only to simplify our life to avoid generating a new key pair, I see the following problem: if the attestation become invalid then we have to revoke the bounded access token and in addition maybe the credentials that are obtained using that token. However, if it is a no for this purpose, what benefits it brings that you cannot achived with the simple assertion based cline authentication? |
We have a PAR request that is signed by using the same key that is created during the setup phase and its attested public key is inside the wallet instance attestation. In this way implicitly we can achieve the same purpose of that spec even before arriving at the token request. However, if you see other benefits of using it, I am totally fine with the modification of the flow. |
Just to be clear, the credential type Is the wallet instance attestation Does dpop improve something in this flow or not? Why? |
Maybe, we are not on the same line. I thought you are referring to the wallet solution and specifically the PID Issuance Flow. but from your last comment, it seems not. can you clarify this point by pointing to the file? |
How do you protect the assertion from replay? |
According to https://italia.github.io/eidas-it-wallet-docs/wallet-instance-attestation-SIW-151/en/wallet-instance-attestation.html, your assertions are key bound ( |
For this aspect the two approaches are the same, since they have holder key binding using Well, it seems to me that this issue was bad addressed by me, since we're not using oauth-attestation-based-client-authentication. Anyway, the interesting question before closing this issue would be: Where oauth-attestation-based-client-authentication could be useful in the flows we have designed for the italian implementation? Since we didn't seen any use cases for our implementation profile |
@tlodderstedt do you have any other consideration? |
draft-looker-oauth-attestation-based-client-authentication defines an new OAuth client authentication method. It defines how an OAuth client can authenticate with an OAuth AS using an attestation and a proof of possession of the bound key. That mechanism can be used at the token endpoint and for PAR. I would assume you can used it to present your wallet instance attestation. |
@tlodderstedt it's something we're working on, the context is the following: request_uri is protected
request_uri is not protected If I understand well, you're suggesting that a RP would expose a token endpoint to enable rfc7521? |
@tlodderstedt probably you are referring to the Wallet Instance Attestation Presentation during the PID Issuing. In this case, yes you are right, we could use the draft-looker-oauth-attestation-based-client-authentication. Actually it seems to us that using rfc7521 is the same because we use the signed request object as a proof and the wallet_instance_attestation as the client_assertion. |
I have to admit I'm lost. What do you use the wallet attestation for? Do you have a sequence diagram? |
Yes Torsten Here the issuance Here the openid4vp flow, where the request uri has dpop to get the wallet instance attestation (rfc7521 as an alternative) |
I guess you use a RFC 7523 client assertion (not RFC 7523). How do you prevent replay of such an assertion?
Well, this is a custom version of request_uri with an additional authentication mechanism. Can you please share an example of the GET request? |
replay attack @fmarino-ipzs we have the duplication of the client assertion in both POST parameters and signed request, I suggest to give some consideration about this choice, if required also in the issuance section (a WAI example openid-credential-issuer vs entity configuration How do you represent the issuer keys in the SD-JWT VCs? GET request
|
As the Wallet Instance Attestation contains the public key of the Wallet Instance ( |
@asharif1990 I understand. This means (at least conceptually) you are inline with https://datatracker.ietf.org/doc/html/draft-looker-oauth-attestation-based-client-auth. Could you use this draft as is? |
@peppelinux Can you please explain why
The reason I'm asking is I'm deeply concerned about the wallet needing to authenticate with each and every party as this either requires a static certificate (super cookie), or a backend service (no offline), and/or a large batch of ephemeral wallet attestations. Those are all limiting factors, I therefore would reduce the need for authentication to the bare minimum. |
the wallet provider is a trusted third party, since it is part of the federation and being accredited by an accreditation body. differently the wallet instance would self issue its metadata, are you in favor of this solution? This would issue the requirement to have two attestations that could be a single one instead: the WIA -> more efficient. I mean that since the wallet instance metadata are ddefined in the wallet solution, it doesn't make sense that the wallet instance should self issue its metadata, since its user doesn't have any power on the definition on that. That's why I suggest to have these issued by wallet provider, in the WIA
I have a vision of a wallet that could work on both federated systems and open systems, where at a global scales different algorithms and capabilities are supported or not supported. I'm not in favor of arbitrary assumptions about what the capabilities should be for the entire ecosystem, even because there may be some cases where an eu member states may decide to extend or reduce some feature of the solution with the requirement to not break the interop. Having worked for years with SAML2 and OIDC and OAuth2 with metadata, I have concerns about abandoning this approach that worked for years and solved several interop issues by design
the static certificate is not a super cookie, since the WIA is ephemeral and bound to specific keys issued by the wallet instance for that. the WIA in the authentication phases solved two requirements:
|
FYI |
It seems to me that we can definitively say that the flow proposed in this PR is not compliant to:
oauth-attestation-based-client-authentication
we should work on an analysis on the impacts and implication of this @asharif1990 @giadas @grausof. In which parts the absence of DPoP in oauth-attestation-based-client-authentication is considerable a requirement or overkill?
Originally posted by @peppelinux in #14 (comment)
The text was updated successfully, but these errors were encountered: