Re: [Id-event] Thread: Clarifying use of sub and iss in SET tokens

Justin Richer <jricher@mit.edu> Sun, 05 March 2017 13:13 UTC

Return-Path: <jricher@mit.edu>
X-Original-To: id-event@ietfa.amsl.com
Delivered-To: id-event@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A418D1294FF for <id-event@ietfa.amsl.com>; Sun, 5 Mar 2017 05:13:19 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Level:
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uAgBd2osDQTB for <id-event@ietfa.amsl.com>; Sun, 5 Mar 2017 05:13:17 -0800 (PST)
Received: from dmz-mailsec-scanner-4.mit.edu (dmz-mailsec-scanner-4.mit.edu [18.9.25.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2429A1294E4 for <id-event@ietf.org>; Sun, 5 Mar 2017 05:13:17 -0800 (PST)
X-AuditID: 1209190f-b8bff700000067c2-b9-58bc0eeb35a3
Received: from mailhub-auth-3.mit.edu ( [18.9.21.43]) (using TLS with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by (Symantec Messaging Gateway) with SMTP id CF.42.26562.BEE0CB85; Sun, 5 Mar 2017 08:13:15 -0500 (EST)
Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11]) by mailhub-auth-3.mit.edu (8.13.8/8.9.2) with ESMTP id v25DDEm1030952; Sun, 5 Mar 2017 08:13:15 -0500
Received: from [192.168.128.57] (static-96-237-195-53.bstnma.fios.verizon.net [96.237.195.53]) (authenticated bits=0) (User authenticated as jricher@ATHENA.MIT.EDU) by outgoing.mit.edu (8.13.8/8.12.4) with ESMTP id v25DDDUh014462 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Sun, 5 Mar 2017 08:13:14 -0500
To: "Phil Hunt (IDM)" <phil.hunt@oracle.com>
References: <4611E3C8-9772-44EA-940D-077E1EA6247F@oracle.com> <7f44a710-0545-157c-b75e-d46853cf2e06@mit.edu> <4B014CCA-BCBE-4894-9F2F-17DA2541509A@oracle.com>
From: Justin Richer <jricher@mit.edu>
Message-ID: <1bbfcb1f-c554-3baf-e260-fbd475c803bb@mit.edu>
Date: Sun, 05 Mar 2017 08:13:12 -0500
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1
MIME-Version: 1.0
In-Reply-To: <4B014CCA-BCBE-4894-9F2F-17DA2541509A@oracle.com>
Content-Type: multipart/alternative; boundary="------------D796B1403E22F800FF3636F2"
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmphleLIzCtJLcpLzFFi42IR4hTV1n3NtyfC4ME9E4uOBd1MFgvmN7I7 MHksWfKTyePj01ssAUxRXDYpqTmZZalF+nYJXBnHH+UVvF3OWDFjlWsD44KSLkZODgkBE4kn f64zdTFycQgJtDFJnG16B+VsYJRY8eUjG4Rzi0ni1svbjCAtwgLeEu1z28FsEQEdiQX37rJD FC1ilDi35RAzSIJZQE9i9c7vTCA2m4CqxPQ1LWA2r4CVxKf9B9hAbBYBFYnrp1eDDRIViJHY 238fqkZQ4uTMJywgNqeAncSK9v2sEDPDJLq3PGeewMg/C0nZLCQpCNtMYt7mh1C2vETz1tlA NgeQrSaxrFUJWXgBI9sqRtmU3Crd3MTMnOLUZN3i5MS8vNQiXRO93MwSvdSU0k2M4MCW5N/B OKfB+xCjAAejEg8vA9fuCCHWxLLiytxDjJIcTEqivNLxQCG+pPyUyozE4oz4otKc1OJDjBIc zEoivBIfgHK8KYmVValF+TApaQ4WJXFecY3GCCGB9MSS1OzU1ILUIpisDAeHkgRvDe+eCCHB otT01Iq0zJwShDQTByfIcB6g4XUgNbzFBYm5xZnpEPlTjIpS4ryCwNQhJACSyCjNg+sFJZ6E t4dNXzGKA70izPsOpJ0HmLTgul8BDWYCGuwnsxNkcEkiQkqqgVFMat0W39evny1LXD5fuGnF 1+LvjbdLxHV51sw68K/1+mMOxVr/BDFjJo7H09/u/DZF3qDRKeaG1I2PZt1BUs/n659iWRDR zqd1e3H6Mdt/szRdg1vmuDAxzS/Jb9v9Jeb0dc9vkqeOGkf3GhvPm3NMYzHf62+Wvmvj72TW bvg/Iezsuc7Uuq1KLMUZiYZazEXFiQCG7tDmFwMAAA==
Archived-At: <https://mailarchive.ietf.org/arch/msg/id-event/xG_tWDXpd8zTdDoDL0by06Jh5eg>
Cc: ID Events Mailing List <id-event@ietf.org>
Subject: Re: [Id-event] Thread: Clarifying use of sub and iss in SET tokens
X-BeenThere: id-event@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "A mailing list to discuss the potential solution for a common identity event messaging format and distribution system." <id-event.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/id-event>, <mailto:id-event-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/id-event/>
List-Post: <mailto:id-event@ietf.org>
List-Help: <mailto:id-event-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/id-event>, <mailto:id-event-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 05 Mar 2017 13:13:19 -0000

Yes, exactly. I believe the event payload should have clearly defined 
semantics within the event object itself. Claims within the object are 
defined and controlled by the event, and things outside the object are 
applicable to the SET itself. We already have several use cases listed 
where the issuer is different for the token and the event, and the 
subject and audience may be different as well. It's clear to me that 
this indicates that we should have clearly defined separation between 
the envelope (the SET) and the payload (the event).

I believe that duplication of information *lessens* the chance of error 
cases as there's now only one way to interpret each piece of data. If I 
get a token and I read "payload.iss" I know that it's the issuer of the 
SET. If I then read "payload.heart-resource-server-access-uri.iss" I 
know it's the issuer of the HEART audit event (to throw a strawman of 
one of many examples out there).

Yes, an event type could define its payload to never include "iss" 
inside of it and say "the issuer of the SET MUST be the same as the 
issuer of the event", if you really feel like optimizing things in your 
particular use case. But I do need to ask why you'd do that to yourself: 
If both issuers (or subjects, or audiences) are the same, then what harm 
is there in repeating the information other than to make the event body 
potentially larger? These aren't ID tokens being chucked around in 
browsers, so if that's the motivation I ask if we're not pre-optimizing 
a problem that we don't have.

In all cases I believe the SET definition should be very clear that any 
claims at the root apply to the SET itself and don't automatically flow 
down to the events inside the data objects within. The claims inside the 
event objects should be strictly more specifically applied to the events 
themselves.

  -- Justin


On 3/4/2017 7:55 PM, Phil Hunt (IDM) wrote:
> That seems unclear.
>
> Do you mean put subj ans issuer inside the payload regardless of 
> whether the issuer of the event is the same or different from the 
> subject?  That way it is always the same though it may be duplicative?
>
> Phil
>
> On Mar 4, 2017, at 2:56 PM, Justin Richer <jricher@mit.edu 
> <mailto:jricher@mit.edu>> wrote:
>
>> 3:
>>
>> Put "iss" and "sub" inside the event when they apply to the event, 
>> even if they're the same as the "iss" and "sub" of the event token 
>> itself.
>>
>>  -- Justin
>>
>> On 3/1/2017 1:27 PM, Phil Hunt wrote:
>>> In the comments on idtoken-07, Yaron raised concerns around the 
>>> confusion of “iss” of the subject of the event vs. issuer of the 
>>> event.  The current text says that if there is a need to distinguish 
>>> between “iss” of the “sub” vs. “iss” of the event, then the event 
>>> should place the “iss” of the subject in the event payload area.
>>>
>>> I agree this does seem awkward.
>>>
>>> I have been thinking a related concern, that a SET could be confused 
>>> as an access token if it has a “sub” value.  If we stop using “sub” 
>>> then we’re potentially causing web access management systems to 
>>> reject SETs as invalid access tokens — this is theoretically a GOOD 
>>> THING.
>>>
>>> PLEASE INDICATE 1 or 2, or provide additional discussion.
>>>
>>> Two options:
>>>
>>> 1. Leave as is.
>>>
>>> 2.  Create a new attribute object, “esub” (event subject) which is a 
>>> JSON object that contains the attributes needed to identify the 
>>> subject.  For example:
>>>
>>> We currently have:
>>>>     {
>>>>       "jti": "fb4e75b5411e4e19b6c0fe87950f7749",
>>>>
>>>>       "sub": "248289761001",
>>>>       "iat": 1458496025,
>>>>       "iss": "https://my.examplemed.com <https://my.examplemed.com/>",
>>>>       "aud": [
>>>>         "https://rp.example.com"
>>>>       ],
>>>>       "events": {
>>>>         "https://openid.net/heart/specs/consent.html":{
>>>>           "iss":"https://connect.example.com",
>>>>           "consentUri":[
>>>>             "https://terms.examplemed.com/labdisclosure.html#Agree"
>>>>           ]
>>>>         }
>>>>       }
>>>>     }
>>>
>>> Could be represented as:
>>>     {
>>>       "jti": "fb4e75b5411e4e19b6c0fe87950f7749",
>>>
>>>       “esub": {
>>>         “sub”:"248289761001”,
>>>         "iss":"https://connect.example.com”
>>>       }
>>>       "iat": 1458496025,
>>>       "iss": "https://my.examplemed.com <https://my.examplemed.com/>",
>>>       "aud": [
>>>         "https://rp.example.com"
>>>       ],
>>>       "events": {
>>>         "https://openid.net/heart/specs/consent.html":{
>>>           "consentUri":[
>>>             "https://terms.examplemed.com/labdisclosure.html#Agree"
>>>           ]
>>>         }
>>>       }
>>>     }
>>>
>>> Comments:
>>> * “sub” remains untouched in the sense that it retains the meaning 
>>> used in traditional access tokens.
>>> * “esub” contains the full information to address the subject.  No 
>>> need to look around for a second “iss” (which may or may not be there)
>>>
>>> To do this would require defining “esub” and sub-attributes like, 
>>> “iss”, “sub” (which follow current defs), and probably “uri” for 
>>> those entities that are referenceable as a URI.  Examples of URI 
>>> subjects:
>>> *  in implicit federation (from RISC): 
>>> “uri”:”mailto:phil.hunt@yahoo.com”
>>> *  in SCIM where resources have URIs: 
>>>  “uri”:”https://scim.example.com/Users/44f6142df96bd6ab61e7521d9"
>>>
>>> One catch. Profiling specs would not be able to define new ways of 
>>> addressing subjects with esub.
>>>
>>> Phil
>>>
>>> Oracle Corporation, Identity Cloud Services & Identity Standards
>>> @independentid
>>> www.independentid.com <http://www.independentid.com>
>>> phil.hunt@oracle.com <mailto:phil.hunt@oracle.com>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Id-event mailing list
>>> Id-event@ietf.org
>>> https://www.ietf.org/mailman/listinfo/id-event
>>