Skip to content

Add ADR Identity Matching and Subject Linking - #223

Open
Nieuwlaar wants to merge 1 commit into
webuild-consortium:mainfrom
Nieuwlaar:patch-1
Open

Add ADR Identity Matching and Subject Linking#223
Nieuwlaar wants to merge 1 commit into
webuild-consortium:mainfrom
Nieuwlaar:patch-1

Conversation

@Nieuwlaar

@Nieuwlaar Nieuwlaar commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

@Saramandus Saramandus added the ADR label Jun 18, 2026
@gfour
gfour self-requested a review June 18, 2026 13:45
@gfour

gfour commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Which use case does the Photo ID requirement come from?

@malinnorlander

Copy link
Copy Markdown
Collaborator

Which use case does the Photo ID requirement come from?

One of the payment use cases


First, for use cases that, by law, need to register an official identifier from an authentic source, WE BUILD will use a unique persistent identifier in the PID. This identifier should be selectively disclosable, so that it is only revealed where the relying party has a legitimate need for an official unique identifier, for example in regulated or public-sector use cases.

Second, for use cases that do not need an official identifier or are not bound by strict regulations, but do need a unique and persistent identifier, WE BUILD will implement directed pseudonym attestations. The pseudonym will be derived from a seed (NONs) provided by the PID provider, and generated through a pseudonym service that can be implemented either by the wallet provider or by a dedicated pseudonym service component.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change NONs to nonce


The consortium agrees on the following decisions for WE BUILD.

First, for use cases that, by law, need to register an official identifier from an authentic source, WE BUILD will use a unique persistent identifier in the PID. This identifier should be selectively disclosable, so that it is only revealed where the relying party has a legitimate need for an official unique identifier, for example in regulated or public-sector use cases.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should be added that the requirement to provide the identifier falls on the PID provider, not the MS. It is not as intrusive as requiring all MS to provide all citizens with a unique identifier from birth, it is the PID provider that creates a unique persistant identifier for all persons that request a PID from them.
Also, the identifier is already in the PID schema as optional, for WeBuild we are changing it to mandatory.


**Obsoleted by:** N/A

## Context

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Context should include that identity matching only applies to new users. Identity matching of persons in existing records is out of scope.

Second, for use cases that do not need an official identifier or are not bound by strict regulations, but do need a unique and persistent identifier, WE BUILD will implement directed pseudonym attestations. The pseudonym will be derived from a seed (NONs) provided by the PID provider, and generated through a pseudonym service that can be implemented either by the wallet provider or by a dedicated pseudonym service component.

Third, WE BUILD will test the use of Photo ID, based on ISO 23220, as an additional option for identity matching in selected use cases. This is considered an enrichment option for use cases where a persistent and official identifier may be needed, while recognising that overuse of Photo ID should be avoided.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Retrieving the photo from the German ID card, is currently only allowed for sovereign authorities, such as the police. Use cases from public sector or even private sector are currently prohibited for legal reasons. It is technically possible, but not legally.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is not a problem, only those that can will implement and test this option.

@oliver-fro

oliver-fro commented Jul 2, 2026

Copy link
Copy Markdown

In Germany there is no persistent unique identifier which can be used. There is only a persistent unique tax number which by law can only be used for tax purposes. Any other use is strictly forbidden.

So this ADR would in the end exclude German citizens who cannot present any unique identifier. Since no European citizen by law can be discriminated all use cases need to be open to European citizens who cannot present any unique and persistent identifier. Because of this I think, there are no use cases which require a persistent number by law. This law would be in violation of European law which prohibits the exclusion of other European citizens. There might be however some cases which only address the citizens of the member state in question. Like voting for parliament. In those cases where discrimination of other European citizens is allowed a persistent number might be required by law. If we want to address those striclty national cases with the exclusion of other European citizens, we should make this in clear terms.

Moreover, I think the rulebook for PIDs is clear. There is no mandatory data field for such an identifier. Even the optional fields only mention a unique but not a persistent administrative number.

I see that Marlin suggests that the identifier is issued by the PID provider and not the member state. For member states which also issue the PID this is of no difference. And as far as I know there are some member states which allow multiple private PID provider. I think that a unique persistent identifier will not be possible without legal action of the member state in question.

I suggest that only unique but not persistent numbers are mentioned. Unique numbers for every citizen may exist in all member states (like a passport number etc.). And then this data field has to be a mandatory field in the rulebook.

Regarding pseudonyms: I understand that this might help to identify a returning customer. Can't the same be achived by issuing an EAA by the relying party when the customer first registers? Like a customer card can help identify a returning customer. Then the pseudonym (like a customer number) is issued by the concerend relying party itself and not by the PID provider. If there is a wallet change the customer needs a new "digital customer card" and has to identify himself to the relying party in order to get a new EAA in the new wallet with the same old customer number (pseudonym). In that case there will be also only one pseudoym for every citizen and relying party.

@SarahGraefer

Copy link
Copy Markdown

I fully agree with the argumentation of @oliver-fro.

An universal pseudonym could theoretically be used to track user behavior across different Relying Parties. Shifting persistence to the EAA level ensures unlinkability, preventing the PID provider from profiling users across different services. By preventing cross-site tracking and adhering to the principle of purpose limitation, this model aligns much more securely with strict data protection regulations (such as GDPR). Decoupling persistence from the core identity provider allows Relying Parties to manage session lifecycles, revocations, and returning user workflows according to their specific technical and business requirements.

@malinnorlander

malinnorlander commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

In Germany there is no persistent unique identifier which can be used. There is only a persistent unique tax number which by law can only be used for tax purposes. Any other use is strictly forbidden.

So this ADR would in the end exclude German citizens who cannot present any unique identifier. Since no European citizen by law can be discriminated all use cases need to be open to European citizens who cannot present any unique and persistent identifier. Because of this I think, there are no use cases which require a persistent number by law. This law would be in violation of European law which prohibits the exclusion of other European citizens. There might be however some cases which only address the citizens of the member state in question. Like voting for parliament. In those cases where discrimination of other European citizens is allowed a persistent number might be required by law. If we want to address those striclty national cases with the exclusion of other European citizens, we should make this in clear terms.

Moreover, I think the rulebook for PIDs is clear. There is no mandatory data field for such an identifier. Even the optional fields only mention a unique but not a persistent administrative number.

I see that Marlin suggests that the identifier is issued by the PID provider and not the member state. For member states which also issue the PID this is of no difference. And as far as I know there are some member states which allow multiple private PID provider. I think that a unique persistent identifier will not be possible without legal action of the member state in question.

I suggest that only unique but not persistent numbers are mentioned. Unique numbers for every citizen may exist in all member states (like a passport number etc.). And then this data field has to be a mandatory field in the rulebook.

Regarding pseudonyms: I understand that this might help to identify a returning customer. Can't the same be achived by issuing an EAA by the relying party when the customer first registers? Like a customer card can help identify a returning customer. Then the pseudonym (like a customer number) is issued by the concerend relying party itself and not by the PID provider. If there is a wallet change the customer needs a new "digital customer card" and has to identify himself to the relying party in order to get a new EAA in the new wallet with the same old customer number (pseudonym). In that case there will be also only one pseudoym for every citizen and relying party.

There is a big difference in providing a unique persistent identifier as a PID provider and as a member state. For a PID provider to provide it only requires an additional attribute stored coupled to the PID. For a member state that doesn't already provide unique persistent identifiers to their citizens it is a rather huge undertake, which is why it isn't a suggestion. Germany is not excluded, neither is any other member state, as long as thay can produce a unique persistent identifier which is a simple technical task, it could just be an UUID.

Sweden requires a unique persistent identifier for all govermental eServices, as well as acess to hospital care, being able to request an invoice, so there are many examples where it is regulated by law. I think it is the same situation in Netherlands for their public sector body.

There is no point in having idetifiers that are not persistent, the whole point of the persistance is to be able to identify a unique person with it and if that identifier changes then there is no identity match any longer.

It is not the PID provider that issues pseudonyms, they just add a nonce as a new attribute in the PID. One psudonym per relying party is already a requirement on psudonyms. The psedonym is generated by the wallet of the user.

See: https://github.com/AltmannPeter/webuild-architecture/blob/08772f00b2b61ef37af133adf37d5598108bdc6b/adr/ar-pseudonyms.md

@malinnorlander

Copy link
Copy Markdown
Collaborator

I fully agree with the argumentation of @oliver-fro.

An universal pseudonym could theoretically be used to track user behavior across different Relying Parties. Shifting persistence to the EAA level ensures unlinkability, preventing the PID provider from profiling users across different services. By preventing cross-site tracking and adhering to the principle of purpose limitation, this model aligns much more securely with strict data protection regulations (such as GDPR). Decoupling persistence from the core identity provider allows Relying Parties to manage session lifecycles, revocations, and returning user workflows according to their specific technical and business requirements.

I think there might be a misunderstanding how pseudnyms are impleneted and their use. PID providers will not issue pseudonyms, they will add a nonce as an attribute used for generating pseudonyms, neither will there be one general pseudonym used at every relying party. Please see: https://github.com/AltmannPeter/webuild-architecture/blob/08772f00b2b61ef37af133adf37d5598108bdc6b/adr/ar-pseudonyms.md

@SarahGraefer

Copy link
Copy Markdown

I fully agree with the argumentation of @oliver-fro.
An universal pseudonym could theoretically be used to track user behavior across different Relying Parties. Shifting persistence to the EAA level ensures unlinkability, preventing the PID provider from profiling users across different services. By preventing cross-site tracking and adhering to the principle of purpose limitation, this model aligns much more securely with strict data protection regulations (such as GDPR). Decoupling persistence from the core identity provider allows Relying Parties to manage session lifecycles, revocations, and returning user workflows according to their specific technical and business requirements.

I think there might be a misunderstanding how pseudnyms are impleneted and their use. PID providers will not issue pseudonyms, they will add a nonce as an attribute used for generating pseudonyms, neither will there be one general pseudonym used at every relying party. Please see: https://github.com/AltmannPeter/webuild-architecture/blob/08772f00b2b61ef37af133adf37d5598108bdc6b/adr/ar-pseudonyms.md

Thanks for the clarification. But wouldn't issuing an EAA be easier and avoid the problems with ZKPs?

@SarahGraefer

Copy link
Copy Markdown

In Germany there is no persistent unique identifier which can be used. There is only a persistent unique tax number which by law can only be used for tax purposes. Any other use is strictly forbidden.
So this ADR would in the end exclude German citizens who cannot present any unique identifier. Since no European citizen by law can be discriminated all use cases need to be open to European citizens who cannot present any unique and persistent identifier. Because of this I think, there are no use cases which require a persistent number by law. This law would be in violation of European law which prohibits the exclusion of other European citizens. There might be however some cases which only address the citizens of the member state in question. Like voting for parliament. In those cases where discrimination of other European citizens is allowed a persistent number might be required by law. If we want to address those striclty national cases with the exclusion of other European citizens, we should make this in clear terms.
Moreover, I think the rulebook for PIDs is clear. There is no mandatory data field for such an identifier. Even the optional fields only mention a unique but not a persistent administrative number.
I see that Marlin suggests that the identifier is issued by the PID provider and not the member state. For member states which also issue the PID this is of no difference. And as far as I know there are some member states which allow multiple private PID provider. I think that a unique persistent identifier will not be possible without legal action of the member state in question.
I suggest that only unique but not persistent numbers are mentioned. Unique numbers for every citizen may exist in all member states (like a passport number etc.). And then this data field has to be a mandatory field in the rulebook.
Regarding pseudonyms: I understand that this might help to identify a returning customer. Can't the same be achived by issuing an EAA by the relying party when the customer first registers? Like a customer card can help identify a returning customer. Then the pseudonym (like a customer number) is issued by the concerend relying party itself and not by the PID provider. If there is a wallet change the customer needs a new "digital customer card" and has to identify himself to the relying party in order to get a new EAA in the new wallet with the same old customer number (pseudonym). In that case there will be also only one pseudoym for every citizen and relying party.

There is a big difference in providing a unique persistent identifier as a PID provider and as a member state. For a PID provider to provide it only requires an additional attribute stored coupled to the PID. For a member state that doesn't already provide unique persistent identifiers to their citizens it is a rather huge undertake, which is why it isn't a suggestion. Germany is not excluded, neither is any other member state, as long as thay can produce a unique persistent identifier which is a simple technical task, it could just be an UUID.

Sweden requires a unique persistent identifier for all govermental eServices, as well as acess to hospital care, being able to request an invoice, so there are many examples where it is regulated by law. I think it is the same situation in Netherlands for their public sector body.

There is no point in having idetifiers that are not persistent, the whole point of the persistance is to be able to identify a unique person with it and if that identifier changes then there is no identity match any longer.

It is not the PID provider that issues pseudonyms, they just add a nonce as a new attribute in the PID. One psudonym per relying party is already a requirement on psudonyms. The psedonym is generated by the wallet of the user.

See: https://github.com/AltmannPeter/webuild-architecture/blob/08772f00b2b61ef37af133adf37d5598108bdc6b/adr/ar-pseudonyms.md

In Germany there is no persistent unique identifier which can be used. There is only a persistent unique tax number which by law can only be used for tax purposes. Any other use is strictly forbidden.
So this ADR would in the end exclude German citizens who cannot present any unique identifier. Since no European citizen by law can be discriminated all use cases need to be open to European citizens who cannot present any unique and persistent identifier. Because of this I think, there are no use cases which require a persistent number by law. This law would be in violation of European law which prohibits the exclusion of other European citizens. There might be however some cases which only address the citizens of the member state in question. Like voting for parliament. In those cases where discrimination of other European citizens is allowed a persistent number might be required by law. If we want to address those striclty national cases with the exclusion of other European citizens, we should make this in clear terms.
Moreover, I think the rulebook for PIDs is clear. There is no mandatory data field for such an identifier. Even the optional fields only mention a unique but not a persistent administrative number.
I see that Marlin suggests that the identifier is issued by the PID provider and not the member state. For member states which also issue the PID this is of no difference. And as far as I know there are some member states which allow multiple private PID provider. I think that a unique persistent identifier will not be possible without legal action of the member state in question.
I suggest that only unique but not persistent numbers are mentioned. Unique numbers for every citizen may exist in all member states (like a passport number etc.). And then this data field has to be a mandatory field in the rulebook.
Regarding pseudonyms: I understand that this might help to identify a returning customer. Can't the same be achived by issuing an EAA by the relying party when the customer first registers? Like a customer card can help identify a returning customer. Then the pseudonym (like a customer number) is issued by the concerend relying party itself and not by the PID provider. If there is a wallet change the customer needs a new "digital customer card" and has to identify himself to the relying party in order to get a new EAA in the new wallet with the same old customer number (pseudonym). In that case there will be also only one pseudoym for every citizen and relying party.

There is a big difference in providing a unique persistent identifier as a PID provider and as a member state. For a PID provider to provide it only requires an additional attribute stored coupled to the PID. For a member state that doesn't already provide unique persistent identifiers to their citizens it is a rather huge undertake, which is why it isn't a suggestion. Germany is not excluded, neither is any other member state, as long as thay can produce a unique persistent identifier which is a simple technical task, it could just be an UUID.

Sweden requires a unique persistent identifier for all govermental eServices, as well as acess to hospital care, being able to request an invoice, so there are many examples where it is regulated by law. I think it is the same situation in Netherlands for their public sector body.

There is no point in having idetifiers that are not persistent, the whole point of the persistance is to be able to identify a unique person with it and if that identifier changes then there is no identity match any longer.

It is not the PID provider that issues pseudonyms, they just add a nonce as a new attribute in the PID. One psudonym per relying party is already a requirement on psudonyms. The psedonym is generated by the wallet of the user.

See: https://github.com/AltmannPeter/webuild-architecture/blob/08772f00b2b61ef37af133adf37d5598108bdc6b/adr/ar-pseudonyms.md

In Germany it is not a question of technical feasibility but a question of constitutional compliance. The German Federal Constitutional Court prohibits such a centralized, uniform identifier to protect citizens from becoming transparent. Legally, Germany is not allowed to do what Sweden does. It must find privacy-friendly, decentralized methods, such as sector-specific or rotating pseudonyms, to verify identities without leaving a permanent, universal trail. Also a PID provider, when it is not the member state itself, can not provide such an unique persistent identifier. It is unlikely that this constitutional challenge is unique to Germany.

The main trade-off is between technical feasibility, interoperability, legal certainty, regulatory requirements and privacy. Some relying parties, such as banks or public bodies, may need an official unique identifier from an authentic source. Other relying parties may only need to recognise a returning user without receiving a cross-context identifier. Pseudonyms can support privacy-preserving recognition within one relying-party context, but may not satisfy regulated use cases requiring auditability or official identification. Attribute enrichment can improve matching, but may create GDPR, consistency and interoperability issues if every relying party requests different attestations. E-signatures may shift some legal accountability to the user, but they do not solve the underlying issue of insufficient PID attributes.

For subject linking, the consortium also discussed whether attestations such as EUCC or UBO could be used to prove representative rights. The conclusion was that EUCC and UBO attestations should not be used as mandate attestations, as company ownership or company information does not itself prove a right to act on behalf of the company. Separate mandate attestations are therefore needed.

@flo0x flo0x Jul 9, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The statement "Should not be used as mandate attestations" should be revised to:
"Should not be used alone as a mandate attestation, but should be used in combination with other attestations."
From the Relying Party (RP) perspective, the process consists of three distinct elements:

  1. Identification data (e.g., EUCC, UBO, Owner)
    These attestations are used solely to provide identification-related information.
  2. Identity verification
    The verification of the person is always performed using an additional identity attestation (e.g., PID, Passport, mDL) and in same cases rleated to accepted identification means in the regulation
  3. Authorization

Authorization is assessed based on the combination of the identification data and any additional mandate or authorization attestations.

a.From the legal perspective:
a. EUCC + PID
This combination is used to verify whether the individual is the legal representative of the company. Whether that legal representative is authorized to perform a specific business operation remains a business decision of the relying party and the company.
b. UBO information + PID/Passport
This combination is used for the identification and verification of the UBO, including UBO submission and compliance with AMLR requirements.

b.From the business perspective:
Additional attestations may be required depending on the use case, such as: Authorised Signatories
, EU PoA, PoA or PoR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants