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

Phil Hunt <phil.hunt@oracle.com> Wed, 01 March 2017 19:57 UTC

Return-Path: <phil.hunt@oracle.com>
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 EA6A31298C2 for <id-event@ietfa.amsl.com>; Wed, 1 Mar 2017 11:57:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level:
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H2=-0.001, 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 unDPgSILxpye for <id-event@ietfa.amsl.com>; Wed, 1 Mar 2017 11:57:18 -0800 (PST)
Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) (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 E374F1296A9 for <id-event@ietf.org>; Wed, 1 Mar 2017 11:57:17 -0800 (PST)
Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v21JvFBT010564 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 1 Mar 2017 19:57:16 GMT
Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id v21JvFZZ031832 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 1 Mar 2017 19:57:15 GMT
Received: from abhmp0011.oracle.com (abhmp0011.oracle.com [141.146.116.17]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v21JvE8x027121; Wed, 1 Mar 2017 19:57:14 GMT
Received: from [10.0.1.30] (/24.86.190.97) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 01 Mar 2017 11:57:13 -0800
Content-Type: multipart/alternative; boundary="Apple-Mail=_6B073CEB-2B3B-4806-9BF6-09BC1CA49281"
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
From: Phil Hunt <phil.hunt@oracle.com>
In-Reply-To: <CY4PR21MB0504DDD6A4283484133A1626F5290@CY4PR21MB0504.namprd21.prod.outlook.com>
Date: Wed, 01 Mar 2017 11:57:12 -0800
Message-Id: <2A8085C9-7BF7-4853-BB67-31CDCF4D366A@oracle.com>
References: <4611E3C8-9772-44EA-940D-077E1EA6247F@oracle.com> <CAAP42hAPZOHn-37wYrOy7OcvNuqWdXtSSMHxb_AoW7kXeAy4wA@mail.gmail.com> <EBD62E0D-3D12-4785-8421-7D92035DE5F5@oracle.com> <CY4PR21MB05046199373561CBFF5F53CBF5290@CY4PR21MB0504.namprd21.prod.outlook.com> <CY4PR21MB0504DDD6A4283484133A1626F5290@CY4PR21MB0504.namprd21.prod.outlook.com>
To: Mike Jones <Michael.Jones@microsoft.com>
X-Mailer: Apple Mail (2.3124)
X-Source-IP: aserv0022.oracle.com [141.146.126.234]
Archived-At: <https://mailarchive.ietf.org/arch/msg/id-event/jpcj1nRLA6f28pHJ0HjjuwP3VSk>
Cc: William Denniss <wdenniss@google.com>, 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: Wed, 01 Mar 2017 19:57:21 -0000

I’m more worried about confusion with OAuth access tokens than with the OIDC profile.

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>







> On Mar 1, 2017, at 11:52 AM, Mike Jones <Michael.Jones@microsoft.com> wrote:
> 
> What I meant to say in my last sentence was “Given that OpenID Connect Core defines the use of “nonce” in ID Tokens, I think it’s sufficient for OpenID Connect Back-Channel Logout to prohibit its use in Logout Tokens.  Both are OpenID-specific.  I don’t think we need to say anything in the SET spec about OpenID-specific claims.”
>  
> From: Id-event [mailto:id-event-bounces@ietf.org] On Behalf Of Mike Jones
> Sent: Wednesday, March 1, 2017 11:48 AM
> To: Phil Hunt <phil.hunt@oracle.com>; William Denniss <wdenniss@google.com>
> Cc: ID Events Mailing List <id-event@ietf.org>
> Subject: Re: [Id-event] Thread: Clarifying use of sub and iss in SET tokens
>  
> In many of the cases, the issuer of the SET will be the same as the issuer of the subject of the event, since it’s the issuer that’s authoritative for both in most cases.  Only in the case that the party issuing the event is different from the party that the event is about (which I think will be a less common case) will it be necessary to have a second issuer.  And in that case, we already have syntax for that second issuer – which becomes a parameter to the event.
>  
> The way that “iss” and “sub” are bound together syntactically is that they’re members of the same JSON object.  If you want to have a second issuer and subject, they would also be members of a JSON object – in that case, the JSON object for the event parameters.
>  
> As I wrote in the (now forked) response to William, we should steer clear of requiring people to use claims in unnatural ways.  For instance, “aud” (audience) restrictions would violate this principle.
>  
> Given that OpenID Connect Core the use of “nonce” in ID Tokens, I think it’s sufficient for OpenID Connect Back-Channel Logout to prohibit its use in Logout Tokens.  Both are OpenID-specific.  I don’t think we need to say anything in the SET spec about OpenID-specific claims.
>  
>                                                                 -- Mike
>  
> From: Phil Hunt [mailto:phil.hunt@oracle.com <mailto:phil.hunt@oracle.com>] 
> Sent: Wednesday, March 1, 2017 11:37 AM
> To: William Denniss <wdenniss@google.com <mailto:wdenniss@google.com>>
> Cc: Mike Jones <Michael.Jones@microsoft.com <mailto:Michael.Jones@microsoft.com>>; ID Events Mailing List <id-event@ietf.org <mailto:id-event@ietf.org>>
> Subject: Re: [Id-event] Thread: Clarifying use of sub and iss in SET tokens
>  
> +1  I like the idea of prohibiting ‘nonce”.  Would be great to have a proposal for the “aud” text.
>  
> I’m neutral on this stuff. In proposing 2, I was responding to the awkwardness that Yaron pointed. I was trying to think of something that cleanly separates SET use of subject from the way access tokens use it. I wanted to bind together the “iss” and “sub” as they often go together. I’m not a fan of having “iss” colliding with the issuer of the SET….I wish there was a better way to keep “sub” and “iss” closer together.
>  
> 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>
>  
>  
>  
>  
>  
> 
>  
> On Mar 1, 2017, at 11:20 AM, William Denniss <wdenniss@google.com <mailto:wdenniss@google.com>> wrote:
>  
> My vote is for #1.  Iss and sub should take the definition from JWT.
>  
> I fear that following the "access token confusion mitigation" logic here basically means that "sub" can only be used by authorization & authentication protocols which is wasn't the intent of the spec <https://tools.ietf.org/html/rfc7519#section-4.1>.  What is the point of these standard claims if we can't use them? Will every new spec prohibit/rename a different standard claim? This isn't scalable, and is super confusing.
>  
> Back-channel logout "breaks" the id token mix-up by prohibiting <https://openid.net/specs/openid-connect-backchannel-1_0.html#LogoutToken> 'nonce'.  When I spoke to Breno about the overall risk, he suggested not reusing "aud" in other systems (like RISC, SCIM, etc). OpenID Connect defines "aud" to be the client-id. If *every other spec* uses a URI-based approach for aud and recommends not re-using audience URIs between systems, then we can avoid conflicts and usage mix-ups.
>  
> If I recall correctly in Buenos Aires, the preference of +Mike was to keep "sub" for compatibility with Backchannel Logout.
>  
> I hope we can avoid going around in circles on this security topic, how about I propose some new text for https://tools.ietf.org/html/draft-ietf-secevent-token-00#section-3.5 <https://tools.ietf.org/html/draft-ietf-secevent-token-00#section-3.5> capturing the "aud" suggestion?  We can confine all such "access token confusion" matters to that section, and just build the best SET spec we can without needing to bake in hacks.
>  
> Mandating that different systems use non-overlapping "aud" sets doesn't not sound like a hack to me at all (unlike renaming "sub"), since the audience of a SET stream is surely different to that of an AuthZ/N token.
>  
>  
>  
> On Wed, Mar 1, 2017 at 10:27 AM, Phil Hunt <phil.hunt@oracle.com <mailto:phil.hunt@oracle.com>> 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 <https://rp.example.com/>"
>      ],
>      "events": {
>        "https://openid.net/heart/specs/consent.html <https://openid.net/heart/specs/consent.html>":{
>          "iss":"https://connect.example.com <https://connect.example.com/>",
>          "consentUri":[
>            "https://terms.examplemed.com/labdisclosure.html#Agree <https://terms.examplemed.com/labdisclosure.html#Agree>"
>          ]
>        }
>      }
>    }
>  
> Could be represented as:
>    {
>      "jti": "fb4e75b5411e4e19b6c0fe87950f7749",
>  
>      “esub": {
>        “sub”:"248289761001”,
>        "iss":"https://connect.example.com <https://connect.example.com/>”
>      }
>      "iat": 1458496025,
>      "iss": "https://my.examplemed.com <https://my.examplemed.com/>",
>      "aud": [
>        "https://rp.example.com <https://rp.example.com/>"
>      ],
>      "events": {
>        "https://openid.net/heart/specs/consent.html <https://openid.net/heart/specs/consent.html>":{
>          "consentUri":[
>            "https://terms.examplemed.com/labdisclosure.html#Agree <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 <mailto:phil.hunt@yahoo.com>”
> *  in SCIM where resources have URIs:  “uri”:”https://scim.example.com/Users/44f6142df96bd6ab61e7521d9 <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 <mailto:Id-event@ietf.org>
> https://www.ietf.org/mailman/listinfo/id-event <https://www.ietf.org/mailman/listinfo/id-event>
>  
> _______________________________________________
> Id-event mailing list
> Id-event@ietf.org <mailto:Id-event@ietf.org>
> https://www.ietf.org/mailman/listinfo/id-event <https://www.ietf.org/mailman/listinfo/id-event>
>  
> _______________________________________________
> Id-event mailing list
> Id-event@ietf.org <mailto:Id-event@ietf.org>
> https://www.ietf.org/mailman/listinfo/id-event <https://www.ietf.org/mailman/listinfo/id-event>