[Openid-specs-ab] Opened-connect-4-identity-assurance-02

Marcos Sanz sanz at denic.de
Tue Jun 4 11:18:43 UTC 2019


Hi Torsten,

(despite subject I am now refering to the latest version -04)

> > - Section 3.1: Re "nationality" it looks like only one country code is 

> > allowed. Is it in scope to deal with multiple nationalities?
> 
> Good question! I will created a corresponding ticket (
https://bitbucket.org/openid/connect/issues/1092/support-multiple-nationalities
). 
> 
> There are indeed people having more than a single nationality. 
> The question is whether the IDP will verify those and will be able to 
attest them.
> 
> In our original setting (German AML), the bank will verify _a_ 
nationality but not 
> necessarily all of them. 
> 
> There is also a structural challenge. If we modify the syntax to allow 
for multiple nationalities, is there a need to link every 
> entry in the array to a certain evidence?

At the moment the spec does not link verified data to its respective 
evidence at all, even when there are multiple evidences (s. for instance 
the example in section 6.2 with ID document AND utility bill), so I don't 
think we would (or actually do) need that capability. On the other hand, 
you might be right with regard to an entity verifying one nationality and 
not all of them. So I don't really need the multiple nationalities 
feature.

What I just came up with and actually think to be more important than 
multiple nationalities (warning: I am not an expert in this topic!) is the 
fact that the ICAO Machine Readable Passports specification asserts 
nationality by means of their ICAO codes (
https://www.icao.int/publications/Documents/9303_p3_cons_en.pdf), which 
expand ISO 3166 because they also have to deal with UN travel documents 
and other various issuing authorities. ICAO even reserve nationality codes 
for stateless people.  For a good summary read
https://www.iso.org/news/2011/04/Ref1604.html rather than the ICAO PDF.

So while ISO3166 initially seemed to us initially like the natural fit to 
describe "issuer country" and "nationality", we might be excluding 
(discriminating?) identities from being describable with our spec.

Are ICAO codes maybe the better way to go?

> > - Section 4.1: If we agree that we should be extensible wrt Trust 
> > Frameworks, a sentence should be included here (or somewhere else) 
that a) 
> > the list in section 12.1 is only the initial list b) that Trust 
Frameworks 
> > that are not understood in answers should be ignored and c) that 
querying 
> > for unknown (i.e. not announced in trust_frameworks_supported) Trust 
> > Frameworks should maybe deliver a dedicated, still to be defined error 

> > (e.g. trust framework not supported)
> 
> Enhanced text a bit. The challenge I see is to really establish the 
required extension mechanism. 

Absolutely.
 
> Created a corresponding ticket: 
https://bitbucket.org/openid/connect/issues/1093/extensibility-how-do-we-support
[...]
> Created another ticket to bring this question to the WG’s attention: 
https://bitbucket.org/openid/connect/issues/1094/how-to-
> treat-unknown-identifiers-in-claims

Ok, let's track discussion there.

> > - Section 8: This is a cool feature, which indeed we use in our 
deployment 
> > (we call it "reason" instead of "purpose", but the same semantics). As 
a 
> > matter of fact, we allow to specify a per-claim "reason" (which is 
> > specially useful to differentiate among why some claims requested are 
> > mandatory and some optional). We query like this (in order to be OIDC 
core 
> > compliant):
> > "userinfo": { "given_name": {"essential": true, "reason": "In order to 

> > create an account"}}
> > Do you think we could enrich "purpose" in this direction? And in any 
case, 
> > a usage example in section 8 would be helpful.
> 
> Sure. Can you please suggest text?

Actually I think now that the text, which is all about requesting user 
claims, better belongs to section 5.1, right before the first note (and 
there's no need at all for a section 8):

"
This specification introduces the request parameter purpose to allow a RP 
to state the purpose for the transfer of the user data it is asking for. 
The parameter purpose can be a member value of each individually requested 
claim, but a claim cannot have more than one associated purpose.
purpose OPTIONAL. String describing the purpose for obtaining certain user 
data from the OP. The purpose MUST NOT be shorter than 3 characters or 
longer than 300 characters. If this rule is violated, the authentication 
request MUST fail and the OP returns an error invalid_request to the RP.
The OP MUST display this purpose in the respective user consent screen(s) 
in order to inform the user about the designated use of the data to be 
transferred or the authorization to be approved. Purposes are free text 
and, as such, it is up to the RP to perform localization of the message 
(incl. choosing the appropriate language) according to user 
context/preferences before issuing the request. If the parameter purpose 
is not present in the request, the OP MAY display a generic purpose or a 
value that was pre-configured for the respective RP.
Example:
{ 
   "userinfo":{ 
      "verified_person_data":{ 
         "claims":{ 
            "given_name":{"essential": true, "purpose": "To make 
communication look more personal"},
            "family_name":{"essential": true},
            "birthdate":{"purpose": "To send you best wishes on your 
birthday"}
         }
      }
   } 
}
"


> > - Section 8: What about moving the final Note on XSS and the like to 
the 
> > (still empty) Security Considerations?
> 
> Well, you are not the first reviewer to raise this. I would like to 
leave it in section 8 for now because moving it into the 
> security considerations section would require to first establish the 
context, … this is about the purpose …
> 
> I personally prefer to give security considerations with the feature 
description since it is the right context and is directly 
> actionable. If we in the end come to the conclusion the security 
considerations section is the better place (== better for 
> implementers to understand) I will happily move it there. Ok?

Fine by me.

One more thing: I noticed that section 7 introduces a new boolean element 
(verified_person_data_supported) with exactly the same name as the 
existing JSON array containing all claims supported and defined in the 
very same section. That's a recipe for disaster ;->

Best regards,
Marcos


More information about the Openid-specs-ab mailing list