Re: [Id-event] Dealing with issuer conflict

"Phil Hunt (IDM)" <phil.hunt@oracle.com> Thu, 18 May 2017 19:40 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 237FC12E91F for <id-event@ietfa.amsl.com>; Thu, 18 May 2017 12:40:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.218
X-Spam-Level:
X-Spam-Status: No, score=-4.218 tagged_above=-999 required=5 tests=[AC_DIV_BONANZA=0.001, BAYES_00=-1.9, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, 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 Zt4RZwUoWwCZ for <id-event@ietfa.amsl.com>; Thu, 18 May 2017 12:40:01 -0700 (PDT)
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 5968A129B01 for <id-event@ietf.org>; Thu, 18 May 2017 12:34:26 -0700 (PDT)
Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v4IJYOg1026254 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 18 May 2017 19:34:24 GMT
Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userv0022.oracle.com (8.14.4/8.14.4) with ESMTP id v4IJYOmR018957 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 18 May 2017 19:34:24 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 v4IJYNFv020733; Thu, 18 May 2017 19:34:24 GMT
Received: from [192.168.1.13] (/174.7.250.104) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 18 May 2017 12:34:23 -0700
Content-Type: multipart/alternative; boundary="Apple-Mail-4FE7D51D-3D04-4266-A046-8E6CEADF6105"
Mime-Version: 1.0 (1.0)
From: "Phil Hunt (IDM)" <phil.hunt@oracle.com>
X-Mailer: iPhone Mail (14E304)
In-Reply-To: <CY4PR21MB0504BE77665A866FF1960E58F5E40@CY4PR21MB0504.namprd21.prod.outlook.com>
Date: Thu, 18 May 2017 12:34:21 -0700
Cc: Dick Hardt <dick.hardt@gmail.com>, ID Events Mailing List <id-event@ietf.org>
Content-Transfer-Encoding: 7bit
Message-Id: <9342926E-FC34-45E4-919D-FB61FE8EB6A3@oracle.com>
References: <D1129EE9-8D49-4262-A569-FF373490EB85@oracle.com> <CAD9ie-unodo_BgMdH-iT64U6n7A4H_kEVOLCViWqDuLfRSRgSg@mail.gmail.com> <262D32B6-940E-4B96-9981-079A5443ED3E@oracle.com> <CY4PR21MB0504CBB636CAD1E33158997DF5E40@CY4PR21MB0504.namprd21.prod.outlook.com> <74177700-9959-4F07-83E3-F3B750CAC9B8@oracle.com> <CY4PR21MB0504BE77665A866FF1960E58F5E40@CY4PR21MB0504.namprd21.prod.outlook.com>
To: Mike Jones <Michael.Jones@microsoft.com>
X-Source-IP: userv0022.oracle.com [156.151.31.74]
Archived-At: <https://mailarchive.ietf.org/arch/msg/id-event/UiGN2qrJFCSFU8DqKMlD45ld0kU>
Subject: Re: [Id-event] Dealing with issuer conflict
X-BeenThere: id-event@ietf.org
X-Mailman-Version: 2.1.22
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: Thu, 18 May 2017 19:40:05 -0000

Thanks Mike. 

I think we disagree.

The concern I have is that most implementers will have to write code that always checks for the absence of a duplicate issuer claim because it changes the meaning of subject.

This strikes me as complexity that needs to be dealt with in the core spec. It stems from our SecToken's use of JWT and its popular use today.

If every profiling spec can do this differently requiring different parsers whats the point of secevents?

Phil

> On May 18, 2017, at 12:08 PM, Mike Jones <Michael.Jones@microsoft.com> wrote:
> 
> Most of what you’re talking about seems to me to be decisions that can be made by particular event definitions or event family definitions.  I have no problem with particular events or event families employing some of the strategies that you’re describing.  The SET spec already facilitates that.
>  
> But per previous discussions, we shouldn’t be making restrictions in the SET spec that limit its applicability by making restrictions on claims usage that will only work for some event use cases and will rule out others.  We should hold to the bright-line test that event definitions define what claims are included in SETS (other than the “events” claim itself) and how they’re used.  Intruding on that will unnecessarily limit the applicability of SETs.
>  
>                                                                 -- Mike
>  
> From: Phil Hunt [mailto:phil.hunt@oracle.com] 
> Sent: Thursday, May 18, 2017 11:41 AM
> To: Mike Jones <Michael.Jones@microsoft.com>
> Cc: Dick Hardt <dick.hardt@gmail.com>; ID Events Mailing List <id-event@ietf.org>
> Subject: Re: [Id-event] Dealing with issuer conflict
>  
> Mike,
>  
> I’m not sure we’re on the same page here. My impression is this is still on the outstanding list.
>  
> Let’s look at some example cases:
>  
> For example, if a relying party (e.g. retail store) wants to notify an IDP that the user has been deleted…
>  
> Currently in the draft:
> When issued by an OpenID Connect issuer:
> {
>   "iss": "https://connect.myidp.com",
>   "sub": "248289761001",
>   "aud": ["connect.myidp.com"],
>   "iat": 1471566154,
>   "jti": "bWJq",
>   "events": {
>     "http://schemas.openid.net/risc/event-type/account-deleted": {}
>   }
> }
>  
> BUT, when issued by a party other than the issuer of the subject:
> {
>   "iss": "https://exampleretail.store.com",
>   "sub": "248289761001",
>   "aud": ["connect.myidp.com"],
>   "iat": 1471566154,
>   "jti": "bWJq",
>   "events": {
>     "http://schemas.openid.net/risc/event-type/account-deleted": {
>       "iss”:"connect.myidp.com”
>     }
>   }
> }
>  
> If you are writing code, if you agree that the OP issues a lot of events, you end up having to check that there’s no embedded “iss” present before you can assume the issuer of the subject is the same as that of the SET token.  This strikes me as very complex.
>  
> Regarding your assertion:
> Any “sub” at the top-level (if any) should be associated with the “iss” at the top-level, which is always the event issuer.
>  
> May be you are thinking that we should be solving this by always issuing embedded iss and sub (Alternative 1):
> {
>   "iss": "https://exampleretail.store.com",  
>   "aud": ["connect.myidp.com"],
>   "iat": 1471566154,
>   "jti": "bWJq",
>   "events": {
>     "http://schemas.openid.net/risc/event-type/account-deleted": {
>       "iss”:”connect.myidp.com”
>       "sub": "248289761001",
>     }
>   }
> }
>  
> OR, Alternative 2:
> {
>   "iss": "https://exampleretail.store.com",
>   "sub": "248289761001",
>   "aud": ["connect.myidp.com"],
>   "iat": 1471566154,
>   "jti": “bWJq"
>   “subIss”:”connect.myidp.com”,
>   "events": {
>     "http://schemas.openid.net/risc/event-type/account-deleted": {}
>   }
> }
>  
> I can see pros and cons for either. I like option 1 because it also makes the SET different from ID Tokens and Access Tokens.
>  
> Option 2 is nice because most SETs we’ve been talking about just have an event type and a subject and no claims.
>  
> The best way to define this is to enforce that sub may only be used at the top level if it is globally identifiable (e.g. such as in the case of SCIM URIs).
>  
> Phil
>  
> Oracle Corporation, Identity Cloud Services Architect & Standards
> @independentid
> www.independentid.com
> phil.hunt@oracle.com
>  
> On May 18, 2017, at 10:40 AM, Mike Jones <Michael.Jones@microsoft.com> wrote:
>  
> I believe that the solution already discussed is the best one.  If the event issuer is different than a logical issuer associated with the event subject, then put the logical “iss” and “sub” values inside the event.  Any “sub” at the top-level (if any) should be associated with the “iss” at the top-level, which is always the event issuer.
>  
> Any proposal that requires duplicating information, such as requiring “subIss” even when it’s always identical to “iss”, is not a great architectural choice, since it creates unnecessary error conditions that would not otherwise be possible.  (How should implementations handle the case where two values are required to match but don’t?)
>  
>                                                                 -- Mike
>  
> From: Id-event [mailto:id-event-bounces@ietf.org] On Behalf Of Phil Hunt (IDM)
> Sent: Thursday, May 18, 2017 7:31 AM
> To: Dick Hardt <dick.hardt@gmail.com>
> Cc: ID Events Mailing List <id-event@ietf.org>
> Subject: Re: [Id-event] Dealing with issuer conflict
>  
> ??
>  
> Happens in any case where sub is not globally identifiable. 
>  
> In Connect, since sub is not uniquely identified, the iss for the sub must be included. This creates a conflict if the issuer of the SET is not the issuer of the subject. 
>  
> Resolving the iss conflict has been on the list of issues since chicago. 
>  
> In RISC we were discussing account close events. I am assume one of the scenarios is RPs will notify IDPs when they close an account. They must use an iss not associated with sub. As things stand now, they will have to assert the extra iss value in their payload---which for most events is complex to parse since their are no other extra claims. 
>  
> Phil
> 
> On May 18, 2017, at 6:36 AM, Dick Hardt <dick.hardt@gmail.com> wrote:
> 
> Phil, would you clarify the use case and the requirement to ensure everyone on the list is aligned? Thanks
>  
> On Wed, May 17, 2017 at 9:45 PM Phil Hunt (IDM) <phil.hunt@oracle.com> wrote:
> In many cases where we are talking about events (eg risc) there is no need for extra claims other than the event type itself.
> 
> It occurs to me that in the case of RP issued events the current sectoken format requires an embedded iss to deal with the conflict with the set issuer. It seems to add a lot of complication for most events.
> 
> What if we defined a new sectoken top level attribute 'subIss' to mean "subject issuer" and keep iss reserved for the SET issuer.
> 
> I would suggest this as a recommended attribute even when iss and subIss are the same for parsing consistency.
> 
> Thoughts?
> 
> Phil
> _______________________________________________
> Id-event mailing list
> Id-event@ietf.org
> https://www.ietf.org/mailman/listinfo/id-event
> -- 
> Subscribe to the HARDTWARE mail list to learn about projects I am working on!
> _______________________________________________
> Id-event mailing list
> Id-event@ietf.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.ietf.org_mailman_listinfo_id-2Devent&d=DwICAg&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=JBm5biRrKugCH0FkITSeGJxPEivzjWwlNKe4C_lLIGk&m=p1Vsd1Hb7BX87sV4x9MhtsGbORcuiacHxujwThSnWh4&s=ATYzOXXGto5afit3OgTjh19KczxKCvaBwC7ftofHMrs&e=
> _______________________________________________
> Id-event mailing list
> Id-event@ietf.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.ietf.org_mailman_listinfo_id-2Devent&d=DwICAg&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=JBm5biRrKugCH0FkITSeGJxPEivzjWwlNKe4C_lLIGk&m=8LfCYox0y3ghN8YAXLrAb5zfUt5rVD8vbwKwvw8-Rjk&s=gv4-yN8LDVir82WEWzix61-YzkrfquEPKMk_TtLylrw&e= 
>