Re: [OAUTH-WG] "cid" claim in JWT
Nat Sakimura <sakimura@gmail.com> Sun, 30 December 2012 04:18 UTC
Return-Path: <sakimura@gmail.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B2B2021F88AC for <oauth@ietfa.amsl.com>; Sat, 29 Dec 2012 20:18:35 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.345
X-Spam-Level:
X-Spam-Status: No, score=0.345 tagged_above=-999 required=5 tests=[AWL=-1.657, BAYES_00=-2.599, GB_SUMOF=5, HTML_MESSAGE=0.001, J_CHICKENPOX_35=0.6, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZOFIzC6BFv-q for <oauth@ietfa.amsl.com>; Sat, 29 Dec 2012 20:18:33 -0800 (PST)
Received: from mail-ee0-f43.google.com (mail-ee0-f43.google.com [74.125.83.43]) by ietfa.amsl.com (Postfix) with ESMTP id EB78721F87B3 for <oauth@ietf.org>; Sat, 29 Dec 2012 20:18:32 -0800 (PST)
Received: by mail-ee0-f43.google.com with SMTP id e49so5853889eek.16 for <oauth@ietf.org>; Sat, 29 Dec 2012 20:18:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=U8P1fSW06xqZu11oiBFw1d13WjpWge8zVDqkUjK2Cds=; b=Ogzgu8vedihkJqs4sExEnvvIPm81Ao2kGW/EXGot0caVVFWaK/lE7LNOR0HVq66gl/ bE2qKXpvG0poyLQabRMX4z7q9/O2GEE6gnATXS/Wjcq92stzXkCQdICVmm4lT4//reCo ne61RW4NywRhyrbLI/9fhiu2vdyik6PhYU0+Kx/fS9nXpcxZ/nOdergWAlBteNWg2R18 sBlx4io3qdvc+/Od9upDpZvtG+wGYNaQWN8g9Tn08DT9cDfOBYAJhpDfijiboD/7XPXk GpaS/nOyEgEAm3UIzzb8SpIrcayLvKM3xL2eD2Gj8KB5sgs1sWHHHLMlKe2gFYWpsrm1 WmvA==
MIME-Version: 1.0
Received: by 10.14.3.195 with SMTP id 43mr99826408eeh.36.1356841112097; Sat, 29 Dec 2012 20:18:32 -0800 (PST)
Received: by 10.14.215.66 with HTTP; Sat, 29 Dec 2012 20:18:31 -0800 (PST)
In-Reply-To: <50DDBCE5.8080205@mitre.org>
References: <4E1F6AAD24975D4BA5B16804296739436697EF82@TK5EX14MBXC283.redmond.corp.microsoft.com> <CABzCy2B592GjoK2XanVfdKW6orqUF+=VxEA2sPoaC1h_EKzD=g@mail.gmail.com> <4E1F6AAD24975D4BA5B16804296739436697FA11@TK5EX14MBXC283.redmond.corp.microsoft.com> <50DDBCE5.8080205@mitre.org>
Date: Sun, 30 Dec 2012 13:18:31 +0900
Message-ID: <CABzCy2Ao2W64jyCxxKk4v=eFVkLLOurgLp+=J-qhG40sjwgfFA@mail.gmail.com>
From: Nat Sakimura <sakimura@gmail.com>
To: Justin Richer <jricher@mitre.org>
Content-Type: multipart/alternative; boundary="047d7b66f23980d2f304d20a30cf"
Cc: oauth <oauth@ietf.org>
Subject: Re: [OAUTH-WG] "cid" claim in JWT
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/oauth>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 30 Dec 2012 04:18:35 -0000
Thanks Justin for a very good rundown. I agree with these. It would be a disservice to the community not to include "azp" (aka "reg", "cid") in JWT, as this gives so much clarity on the issue. Let me add one more: it is a use case for HoK of the presenter while not letting the issuer know where it is being presented. (e.g., showing driver's license at a liquor shop.) Most of the physical identity documents (e.g., passport, national ID card, etc.) falls into this category. iss => Authorization Server aud => * sub => Subject of the JWT Claim Set azp => Subject of the JWT Claim Set Nat On Sat, Dec 29, 2012 at 12:38 AM, Justin Richer <jricher@mitre.org> wrote: > I thought I should drop in my full rundown of the party representation > here. Assuming a standard 3-legged OAuth flow of any flavor, you have the > following mapping: > > iss => Authorization Server > aud => Resource Server(s) > sub => Resource Owner > azp => Client > > Note that the "sub" claim here is a drop-in replacement for "prn" and that > "azp" is a more or less drop-in replacement for "cid". > > Of course there are other ways that a JWT could be minted, so let me be a > bit more concrete with a few examples. > > 3-legged OAuth: > > iss: http://auth.example.org/ > aud: http://resource.example.org/ > sub: bob.smith > azp: oauth-client-1 > > 2-legged OAuth (client credentials): > > iss: http://auth.example.org/ > aud: http://resource.example.org/ > sub: oauth-client-1 > azp: oauth-client-1 > > Client authentication assertion, self-issued: > > iss: oauth-client-1 > aud: http://auth.example.org/ > sub: oauth-client-1 > azp: oauth-client-1 > > Authorization grant assertion, self-issued: > > iss: oauth-client-1 > aud: http://auth.example.org/ > sub: bob.smith > azp: oauth-client-1 > > Client authentication assertion, non-self-issued: > > iss: http://auth.example.org/ > aud: http://auth.example.org/ > sub: oauth-client-1 > azp: oauth-client-1 > > Authorization grant assertion, non-self-issued: > > iss: http://auth.example.org/ > aud: http://auth.example.org/ > sub: bob.smith > azp: oauth-client-1 > > OpenID Connect ID Token: > > iss: http://auth.example.org/ > aud: oauth-client-1 > sub: bob.smith > azp: oauth-client-1 > > > > Note that repeated values are intentional and MUST be preserved, since > there's no way to know the value of a "missing" claim otherwise. > > There are likely other use cases here as well. Writing this all out has > made me wonder if this needs to be captured in an online spreadsheet > somewhere. > > -- Justin > > > > On 12/20/2012 11:22 AM, Mike Jones wrote: > > This was discussed on the OpenID Connect call this morning. Our sense > was that “Authorized Party” was actually a more general description of the > concept than Client ID. Justin Richer pointed out that at that point, > there would be claims defined for representing all four potential parties > in an OAuth interaction. Connect plans to define the optional “azp” > (Authorized Party) claim to let people experiment with it. There wasn’t a > sense that it’s necessary to add to the JWT spec itself at this time.**** > > ** ** > > As for the proposed “cid” (Client Identification Data claim type) claim, > our sense was that that is more related to proof of possession, and can be > discussed in that context.**** > > ** ** > > -- Mike**** > > ** ** > > *From:* Nat Sakimura [mailto:sakimura@gmail.com <sakimura@gmail.com>] > *Sent:* Wednesday, December 19, 2012 11:43 PM > *To:* Mike Jones > *Cc:* Anthony Nadalin; John Bradley; oauth > *Subject:* Re: [OAUTH-WG] "cid" claim in JWT**** > > ** ** > > As "prn" is way under-defined [1], there can be two interpretations for > "prn". **** > > ** ** > > Considering that "subject" is not a defined term (= dictionary term), and > interpreting a boarding pass as:**** > > ** ** > > "Japan Airlines authorizes JL002 to accept passenger John Smith at the > Gate B22 provided safety and other requirements are met between the > boarding time (14:30) and 10 minutes before the departure time (15:10)" ** > ** > > ** ** > > then: **** > > ** ** > > iss: Japan Airlines**** > > prn: JL002 (the flight number)**** > > cid: John Smith (the passenger, who uses the boarding pass)**** > > aud: Gate B22 (Gate assigned to JL002)**** > > nbf: 2012-12-31T14:30+9**** > > exp: 2012-12-31T15:00+9**** > > ** ** > > Alternatively, if we interpret the boarding pass as: **** > > ** ** > > "Japan Airlines authorizes John Smith to board JL002 at the Gate B22 > provided safety and other requirements are met the boarding time (14:30) > and 10 minutes before the departure time (15:10)""**** > > ** ** > > iss: Japan Airlines**** > > prn: John Smith**** > > cid: John Smith**** > > aud: Gate B22 (Gate assigned to JL002)**** > > nbf: 2012-12-31T14:30+9**** > > exp: 2012-12-31T15:00+9**** > > ** ** > > This interpretation has lost some information while encoding into JWT, so > prior one may be more appropriate. **** > > ** ** > > Either way, as "prn" lacks exact semantics, what goes into it is subject > to interpretation while "cid" is very clearly defined. **** > > ** ** > > Let me give another example. **** > > ** ** > > An entitlement that says: "John Smith is allowed to activate the system > when Mary White presents this token (#1234) to the System A" that is issued > by the "ABC Corp"**** > > ** ** > > iss: ABC Corp. **** > > jti: #1234**** > > prn: John Smith**** > > cid: Mary White**** > > aud: System A**** > > ** ** > > Note: this is not delegation nor on-behalf-of. **** > > ** ** > > More webby example: "John Smith authorizes photo print service A to access > photo archive service B for John Smith's photo #123 until 2013-04-01 for > the sum of $100."**** > > ** ** > > iss: John Smith's Authorization Server**** > > prn: John Smith's photo #123**** > > cid: Photo print service A**** > > aud: photo archive service B**** > > exp: 2013-04-01**** > > ** ** > > Nat**** > > ** ** > > [1] 4.1.6 "prn" defines its value as what identifies:**** > > ** ** > > "the subject of the JWT" **** > > ** ** > > This can be expanded by replacing "JWT" with its definition as **** > > ** ** > > "the subject of the string consisting of multiple parts, the first being > the Encoded JWT Header, plus additional parts depending upon the contents > of the header, with the parts being separated by period ('.') characters, > and each part containing base64url encoded content."**** > > ** ** > > Further, expanding "JWT Header", it will become **** > > ** ** > > "the subject of the string consisting of multiple parts, the first being > the string representing a JSON object that describes the cryptographic > operations applied to the string, plus additional parts depending upon the > contents of the header, with the parts being separated by period ('.') > characters, and each part containing base64url encoded content."**** > > ** ** > > To me, it is not clear what it means. **** > > ** ** > > ** ** > > On Thu, Dec 20, 2012 at 3:07 PM, Mike Jones <Michael.Jones@microsoft.com> > wrote:**** > > What would the iss, prn, aud, and cid values represent in the boarding > pass example?**** > > **** > > -- Mike**** > > **** > > *From:* Nat Sakimura > *Sent:* December 19, 2012 9:32 PM > *To:* Mike Jones > *CC:* Anthony Nadalin, John Bradley, oauth > *Subject:* Re: [OAUTH-WG] "cid" claim in JWT**** > > **** > > I obviously disagree - if I did agree, I did not send it to the list to > start with :-) **** > > ** ** > > "cid" (or in my original proposal, "reg") has a very clear and established > meaning. **** > > The parallel examples abounds in our daily life. **** > > ** ** > > It has very little to do with On-behalf-of. **** > > It is not a delegation statement. **** > > ** ** > > "cid" is there to indicate to whom it was issued to. **** > > The entity who was issued this "token" is eligible to use it at the **** > > entities indicated by "aud". **** > > ** ** > > Example in our real life are like: **** > > ** ** > > - Airline boarding pass**** > > - Registered instruments (bond / share) **** > > - Monthly train pass**** > > - Disneyland annual passport**** > > etc. etc. **** > > ** ** > > Please do not mix it up with a delegation statement like on-behalf-of, *** > * > > which is much less well defined. **** > > ** ** > > Nat**** > > ** ** > > ** ** > > On Thu, Dec 20, 2012 at 12:07 PM, Mike Jones <Michael.Jones@microsoft.com> > wrote:**** > > I'm with Tony on this. This seems premature to put into the JWT > standard. All the other JWT claims have well established meanings and > history behind them. These don't.**** > > **** > > If the goal is to allow OpenID Connect implementations to not reject > tokens using “cid”, there are lots of other ways to accomplish this that I > think we should consider first.**** > > **** > > -- Mike**** > > **** > > **** > > *From:* John Bradley > *Sent:* December 19, 2012 6:25 PM > *To:* Anthony Nadalin > *CC:* oauth**** > > *Subject:* Re: [OAUTH-WG] "cid" claim in JWT**** > > **** > > I agree, audience who requested it and and who it is requested for are all > interrelated. **** > > ** ** > > However we do need to set down some standard way of expressing it as > people are starting to make stuff up on their own that will impact > interoperability.**** > > ** ** > > If Google starts thawing in cid and clients don't know about it they must > reject the JWT etc.**** > > ** ** > > John**** > > ** ** > > On 2012-12-19, at 9:40 PM, Anthony Nadalin <tonynad@microsoft.com> wrote:* > *** > > ** ** > > It seems premature and we should consider this in the bigger context of > the “on behalf of”/delegation work that has been started**** > > **** > > *From:* oauth-bounces@ietf.org [mailto:oauth-bounces@ietf.org] *On Behalf > Of *Nat Sakimura > *Sent:* Tuesday, December 18, 2012 6:22 PM > *To:* oauth > *Subject:* [OAUTH-WG] "cid" claim in JWT**** > > **** > > In OpenID Connect WG, we have been talking this for sometime. **** > > "cid" claim identifies the entity that the JWT was issued to as a > rightful/licensed user. **** > > Google already uses this in their implementation of id_token of OIDC. **** > > **** > > Here is the text proposal. It introduces two new standard claims: "cid" > and "cit". **** > > **** > > It would be very useful in creating a HoK drafts as well. **** > > **** > > Cheers, **** > > **** > > Nat**** > > **** > > **** > > *4.1.9. "cid" Client Identification Data Claim***** > > **** > > The "cid" (client identification data) claim allows the receiver **** > > of the JWT to identify the entity that the JWT is **** > > intended to be used by. The audience of the JWT MUST be **** > > able to identify the client with the value of this claim.**** > > **** > > The "cid" value is a case sensitive string containing a StringOrURI value.**** > > This claim is OPTIONAL. If the entity processing the claim does not **** > > identify the user of the JWT with the identifier in the "cid" claim value, **** > > then the JWT MUST be rejected. The interpretation of the registered to **** > > value is generally application specific.**** > > **** > > A typical example of a registered to claim includes following: **** > > * client_id that the audience can use to authenticate and **** > > identify the client.**** > > * A base64url encoded JWK. **** > > * A URL that points to the key material that the audience can use to **** > > authenticate the user of the JWT.**** > > **** > > *4.1.10 "cit" (Client Identification Data claim type)***** > > **** > > The "cit" (Client Identification Data claim type) identifies the type **** > > of the "cid" claim. It is a StringOrURI value. The defined values **** > > are the following:**** > > **** > > "client_id" The value of the "cid" claim is the Client ID of the client **** > > that the audience of the JWT is able to use to authenticate the client.**** > > **** > > "jwk" The value of the "cid" claim is a base64url encoded JWK of **** > > the registered client.**** > > **** > > "jku" The value of the "cid" claim is the "jku" defined in 4.1.2 of **** > > JSON web signature [JWS].**** > > **** > > "x5u" The value of the "cid" claim is the URL that points to the public **** > > key certificate of the registered client. The format of the content **** > > that x5u points to is described in section 4.1.4 of the JSON Web Signature.**** > > **** > > -- > Nat Sakimura (=nat)**** > > Chairman, OpenID Foundation > http://nat.sakimura.org/ > @_nat_en**** > > **** > > _______________________________________________ > OAuth mailing list > OAuth@ietf.org > https://www.ietf.org/mailman/listinfo/oauth**** > > ** ** > > > _______________________________________________ > OAuth mailing list > OAuth@ietf.org > https://www.ietf.org/mailman/listinfo/oauth**** > > > > **** > > ** ** > > -- > Nat Sakimura (=nat) **** > > Chairman, OpenID Foundation > http://nat.sakimura.org/ > @_nat_en**** > > > > **** > > ** ** > > -- > Nat Sakimura (=nat)**** > > Chairman, OpenID Foundation > http://nat.sakimura.org/ > @_nat_en**** > > > _______________________________________________ > OAuth mailing listOAuth@ietf.orghttps://www.ietf.org/mailman/listinfo/oauth > > > -- Nat Sakimura (=nat) Chairman, OpenID Foundation http://nat.sakimura.org/ @_nat_en
- [OAUTH-WG] "cid" claim in JWT Nat Sakimura
- Re: [OAUTH-WG] "cid" claim in JWT Anthony Nadalin
- Re: [OAUTH-WG] "cid" claim in JWT John Bradley
- Re: [OAUTH-WG] "cid" claim in JWT Nat Sakimura
- Re: [OAUTH-WG] "cid" claim in JWT Mike Jones
- Re: [OAUTH-WG] "cid" claim in JWT Nat Sakimura
- Re: [OAUTH-WG] "cid" claim in JWT Mike Jones
- Re: [OAUTH-WG] "cid" claim in JWT Nat Sakimura
- Re: [OAUTH-WG] "cid" claim in JWT Mike Jones
- Re: [OAUTH-WG] "cid" claim in JWT Justin Richer
- Re: [OAUTH-WG] "cid" claim in JWT Nat Sakimura
- Re: [OAUTH-WG] "cid" claim in JWT Mike Jones
- Re: [OAUTH-WG] "cid" claim in JWT Anthony Nadalin
- Re: [OAUTH-WG] "cid" claim in JWT Nat Sakimura