Re: [Id-event] Dealing with issuer conflict

"Phil Hunt (IDM)" <phil.hunt@oracle.com> Thu, 18 May 2017 20:36 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 B37E212EBA5 for <id-event@ietfa.amsl.com>; Thu, 18 May 2017 13:36:42 -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 42Wlf-nBwJLh for <id-event@ietfa.amsl.com>; Thu, 18 May 2017 13:36:37 -0700 (PDT)
Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) (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 E90AB12EB12 for <id-event@ietf.org>; Thu, 18 May 2017 13:30:01 -0700 (PDT)
Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v4IKTxUX024017 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 18 May 2017 20:29:59 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 v4IKTwTd006377 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 18 May 2017 20:29:58 GMT
Received: from abhmp0012.oracle.com (abhmp0012.oracle.com [141.146.116.18]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v4IKTwpT017297; Thu, 18 May 2017 20:29:58 GMT
Received: from [192.168.1.13] (/174.7.250.104) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 18 May 2017 13:29:57 -0700
Content-Type: multipart/alternative; boundary="Apple-Mail-2AC2151E-519F-49F5-A590-1FF44E35C5F2"
Mime-Version: 1.0 (1.0)
From: "Phil Hunt (IDM)" <phil.hunt@oracle.com>
X-Mailer: iPhone Mail (14E304)
In-Reply-To: <CAGdjJpJQJYwJtCXn30PkqRMf-9M1PgdZw1nr18GmaQe+G6h3Bw@mail.gmail.com>
Date: Thu, 18 May 2017 13:29:56 -0700
Cc: Mike Jones <Michael.Jones@microsoft.com>, ID Events Mailing List <id-event@ietf.org>, Dick Hardt <dick.hardt@gmail.com>
Content-Transfer-Encoding: 7bit
Message-Id: <9ABE055C-C3B3-48CA-8DF3-5051C5E6DAE4@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> <9342926E-FC34-45E4-919D-FB61FE8EB6A3@oracle.com> <CAGdjJpJQJYwJtCXn30PkqRMf-9M1PgdZw1nr18GmaQe+G6h3Bw@mail.gmail.com>
To: Marius Scurtescu <mscurtescu@google.com>
X-Source-IP: aserv0022.oracle.com [141.146.126.234]
Archived-At: <https://mailarchive.ietf.org/arch/msg/id-event/awdayZukvMPy1wGIEiCSr4Qm__k>
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 20:36:43 -0000

Marius,

+1

I like this because my point has been re-using iss at the top level may be visually pleasing but it doesn't make the code simpler. Those that fail to check for an embedded iss could be exposing themselves to mistaken assumptions about the subject issuer causing confusion. 

IMO, this proposal can work equally well for the SCIM cases too. 

Phil

> On May 18, 2017, at 1:11 PM, Marius Scurtescu <mscurtescu@google.com> wrote:
> 
> We also have the open issue of SETs being confused for Id Tokens or access tokens.
> 
> Pushing the iss+sub pair always down to the event level, and leaving only an iss at the top level solves both problems.
> 
> The top level iss is the issuer of the SET and provides context for the SET signature.
> 
> The event level iss provides context for event level sub.
> 
> There is no top level sub, this eliminates any Id Token or access token confusion possibility.
> 
> The only drawback I can see is the extra verbosity in case multiple events are in one SET. Also, the top level iss and event level iss will probably be the same often for SETs issued by an IdP, but they don't have to. But I don't see this as a big problem.
> 
> This is the alternative I am referring to:
> {
>   "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",
>     }
>   }
> }
> 
> 
> 
> 
> Marius
> 
>> On Thu, May 18, 2017 at 12:34 PM, Phil Hunt (IDM) <phil.hunt@oracle.com> wrote:
>> 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= 
>>> 
>>>  
>>> 
>> 
>> _______________________________________________
>> Id-event mailing list
>> Id-event@ietf.org
>> https://www.ietf.org/mailman/listinfo/id-event
>> 
>