Add companion whitepaper: Operator Token Acquisition for Number Verification on Android (TS.43/OpenID4VP)#238
Conversation
|
The language could be clearer, I think, what is a "specification" and what is a recommendation. |
Thanks for the feedback, Axel. Are you referring to a specific part of the document, or is this a general comment based on what you've seen throughout the document? |
|
Hello @albertoramosmonagas I have one first comment/question on the detail: Do you have rational to perform the phoneNumber retrieval from the tempToken in step 3 of your flow and not in the 4? I do not have a clear response on that. We have implement this way in some of our countries but I'm struggling to answer when IT architects told that is a Resource Server job and not AS one... |
|
Another one (checked with @chatelgu) - in step (3) POST /token (from Application to the Aggregator) it is confusing to use Another option is to have in the assertion a dedicated |
|
Hi @bigludo7 Once aligned internally at TEF, we thumb up to using vp_token as a prefix to the sub claim Regarding the previous comment, our rational is as follows:
What are your thoughts, guys? |
|
Hi @bigludo7, @AxelNennker. Thanks for the feedback — pushed a revision addressing it:
|
|
Is there a typo in the end-to-end flows in Step 4? It's stated the Application calls the NV API directly but it's the Host: < aggregator-host > that's shown. Our understanding would be that following Step 3, after the MNO access_token is obtained by the Aggregator, the Aggregator may correspondingly return the aggregator_access_token to the Application. Then in Step 4, the Application calls the Aggregator's API endpoint with the aggregator_access_token, and subsequently the Aggregator maps this to the MNO access_token to call the MNO's API endpoint (as per the standard CAMARA flows with an aggregator). In this way,
I'm not sure if the above is your intention for these flows. |
|
You’re absolutely right with your arguments. That’s precisely why Step 4 instructs the application to make its service API request to the aggregator host, rather than the MNOs. My guess on where the confusion might come from imho, is that many aggregators are not exposing raw CAMARA APIs and thus the understanding of "calling /number-verification/v2/device-phone-number directly" for them is that such call is expected to be performed on the MNOs host. The white paper though, in the Step 4 description, refers to calling the NV API directly on the aggregator host with the aggregator's provided access_token. Maybe "directly" may result confusing here since it is not grammatically needed, or access_token could be referred to as aggregator_access_token, or it is actually the aggregator exposing raw CAMARA NV API what is confusing. What's your thoughts on what could be reworded for better understanding? |
|
Hi @diegotid Thanks for your understanding. If possible, I'd propose to start with the end-to-end flow diagrams since the Application and the Aggregator are present and separated (unlike in the ICM docs). The Step 4 flows (e.g. GET /device-phone-number) may then be split from Application -> Aggregator, and then Aggregator -> CSP NV API, along with the respective API responses per leg. In the Step 4 text section, you may then opt to describe each of these legs. This should then bring clarity to the Step 4 flows. |
|
Hi @kwokonn-looi, Thanks, this is a fair point and we appreciate the suggestion. Our sense is that the split you describe is already reflected in the sequence diagrams: both the §3 overview and the detailed Appendix A diagram model the Application and the Aggregator as separate participants (Appendix A even splits App Frontend / App Backend / Aggregator / CSP), so each hop already appears as its own arrow with its own response. For Step 4 specifically, we have reworded the text so it is explicit that the Application calls the Aggregator's NV endpoint, and the Aggregator then maps the request to the MNO/CSP NV API internally — the same aggregator pattern used in Step 3. With that wording change, we think the per-leg behaviour is clear without adding separate diagrams that would duplicate what the participant columns already distinguish. So we would propose to keep the current representation as is. If any specific leg still reads ambiguously to you, point us at it and we will refine that spot. CC: @diegotid |
|
Hi @bigludo7, any points from your side? can we proceed with merge this PR? |
What type of PR is this?
Add one of the following kinds:
What this PR does / why we need it:
Adds a technical whitepaper describing the end-to-end Operator Token acquisition flow for Number Verification on Android, including TS.43, OpenID4VP, Digital Credentials API and JWT Bearer usage.
The document is intended as complementary implementation guidance and does not modify the CAMARA Number Verification API specification. It is informative, not normative, and fills the gap left by NV 2.1 regarding how an
operatorTokenis obtained and exchanged prior to calling the API.Which issue(s) this PR fixes:
Fixes #237
Special notes for reviewers:
This document is informative/companion material, not a change to the NV API definition or YAML. Placement in this repository reflects where the work originated; there is an open discussion about eventually hosting this and similar cross-spec companion material in a dedicated whitepaper/reference repository rather than inside individual API Sub Project repos. Reviewers from Commonalities and ICM are encouraged to confirm alignment with the JWT Bearer flow as currently documented.
Changelog input
Additional documentation
This section can be blank.