On Wed, Nov 25, 2015 at 3:58 PM, John Bradley <ve7...@ve7jtb.com> wrote:

> I am fine with that, however saying integrity protected, may be better
> than signed.  May people will argue that HMAC or encryption with sender
> verification is not signature.
>

Good point, I also prefer integrity protected.  Are we all good with this
now?  I'd like to look at a diff to make sure after following the thread.

Thanks!
Kathleen



> However they are perfectly valid.
>
>
> On Nov 25, 2015, at 5:53 PM, Justin Richer <jric...@mit.edu> wrote:
>
> The requirement is not that signed JWTs be used, it’s that unsigned JWTs
> not be used on their own. Reference tokens and encrypted JWTs are also
> valid, as are other signed formats like SAML assertions or even a COSE
> Token (if it’s encoded to HTTP friendliness).
>
> My recommendation:
>
> Remove the erroneous requirement text from section 5 and restore to
> previous version.
>
> Amend the text in section 6 from:
>
>    To
>    simplify the subsequent description we assume in the PoP architecture
>
>    that the token itself is digitally signed by the authorization server
>    and therefore cannot be modified.
>
>
>
> To:
>
>    In all such cases, the token remains opaque to the client. To
>    simplify the subsequent example and description we assume in the PoP 
> architecture
>
>    that the token itself cannot be modified by the client, either due to
>
>    cryptographic protection (such as signature or encryption) or use of
>
>    a reference value with sufficient entropy and associated secure lookup.
>
>    These are characteristics shared with bearer tokens and more information
>
>    on best practices can be found in [[RFC6819]] and in the security
>
>    considerations section of [[RFC6750]].
>
>
>
>  — Justin
>
> On Nov 25, 2015, at 3:39 PM, Kathleen Moriarty <
> kathleen.moriarty.i...@gmail.com> wrote:
>
> Hi,
>
> Sent from my iPhone
>
> On Nov 25, 2015, at 3:20 PM, John Bradley <ve7...@ve7jtb.com> wrote:
>
> Tokens are signed or the information is otherwise integrity protected
> between the AS and the RS.
>
> I suspect Kathleen is concerned about the key getting modified in transit.
>
> That needs to be protected against, but there is more than one way to do
> that.
>
>
> Phil is correct.  I was looking for consistency between the sections since
> they related to each other.  If there is a security risk or consideration,
> that needs to be explicitly called out as a concern such as a key being
> modified in transit.  If there are options to protect against that, those
> would ideally be required or would have warnings.
>
>
> So sending the public key in a unsigned JWT access token would be
> immensely stupid,  not just for PoP but for scopes and everything else.
>
>
> Good, easy to require then.
>
> Thanks,
> Kathleen
>
>
> In OAuth 2 all tokens need to be integrity protected between the AS and
> RS.
> That can be via signature,  by having a reference with sufficient entropy
> and secure introspection or database lookup.
>
> I think that is a OAuth 2 security consideration.   We are adding a
> additional confirmation claim to the existing information that needs to be
> protected the same as the rest.
>
> John B.
>
>
> On Nov 25, 2015, at 4:38 PM, Phil Hunt <phil.h...@oracle.com> wrote:
>
> <editors hat>
> If there is agreement that tokens are opaque then the requirement that
> tokens be signed must be removed from the threat mitigation requirements.
>
> And the paragraph in sec 5 that brian was concerned about be restored.
>
> Phil
>
> On Nov 25, 2015, at 11:24, Justin Richer <jric...@mit.edu> wrote:
>
> It is still end to end authentication with opaque tokens — since all OAuth
> tokens, including PoP tokens, have always been intended to be opaque to the
> client. That hasn’t changed and that isn’t the intent of this document. If
> that’s how people are reading it then we need to pull it back and rewrite
> it so that’s not the case.
>
> The client gets a token that has two parts: the token and the key. The
> token is analogous to the access_token we have today and would come out of
> the server in the same field. The key is handed to the client alongside the
> token or registered by the client during the token request. Either way
> there’s an association between the two but it’s not the same association as
> a public/private keypair.
>
> It’s possible to sign the token itself, but the client doesn’t care. It
> sends the token and signs the HTTP request to the RS whether the token is
> signed, unsigned, hex blob, encrypted, or anything else. The same series of
> options are available as with bearer tokens. PoP tokens have never, ever
> been intended to be anything but opaque to the client.
>
> The token can’t be opaque to the RS, which has to figure out what key to
> use to check the message signature. But we’ve got options there, like the
> embedded key in a JWT from Mike’s draft, or doing introspection to get the
> key (from an extension that hasn’t been written yet), or simply looking it
> up in the same database because the RS and the AS are in the same box. Does
> this structure/service/database choice sound familiar? It should, it’s the
> same as bearer tokens. This is also how the RS gets information like which
> scopes are associated with the token, if it’s expired, and all that.
>
>
>
>
> So here’s how I see it going on the wire:
>
>
>
> [image:
> http://www.websequencediagrams.com/cgi-bin/cdraw?lz=cGFydGljaXBhbnQgQ2xpZW50IGFzIEMKAAwMUmVzb3VyY2UgT3duZXIgYXMgUk8AFA1BdXRob3JpemF0aW9uIFNlcnYAIQZBUwA7DVByb3RlY3RlZABICmFzIFJTCgoKClJPLS0-QzogR28gZ2V0IG15IHIAbwcKQy0tPlJPOiBSZWRpcmVjdCB0byBBUy9BRQAvBkFTOiBMb2cgaW4sIGEAgQIHZSBjAIFHBQpBUwAqEwAVBwBrCEhhbmQAKQcAPAUgZ3JhbnQKCmFsdCBzAIFGBnN1cHBsaWVkIGtleQpDAG4GVG9rZW4gcmVxdWVzdCAoADAFKQpBUwCBDAZnZW5lcmF0ZSB0ACIFYW4ANwUva2V5cGFpcgAiBUMAPAgmIEsAEAtlbHMAgTcIAE8pICYga2V5AGYYLCBhc3NvY2lhdGUgd2l0aACBQQUAcBIKZW5kCgpDLT5SUzogUgCBUQdpbmNsdWRpbmcAgT4Lc2lnbmVkAEEKAIIkBnRydWN0dXJlZACBbQYKUlMARAZjaGVjawCCAAdzaWduYXR1cmUgLyBkZWNyeXB0AB8PUGFycwCCLgcAOQlVbnBhY2sAgncFAIIYBWludHJvc3BlY3RpbwBiBkFTOiBzZW4AdAcgKG5vdABiCikgdG8AJQ9BAIEVBwAvBWtleSAocHVibGljIG9yIHNoYXJlZCkAgwIGZGF0YWJhc2UAgUUJbG9vayB1cABhCGxvY2FsLwAtBiBEQikAHQthAIQoBgCCUAUAgX4OAIQsCACCBAp1c2luZwCEWAUAGw9pZ2h0cwCDNQoAgm4HAIJbBgCCXQVDOiByZXR1cm4AhicJ&s=modern-blue]
>
>
>
> (I just wrote this up so there are probably holes. Here’s the source if
> anyone wants to tweak it:
> http://www.websequencediagrams.com/?lz=cGFydGljaXBhbnQgQ2xpZW50IGFzIEMKAAwMUmVzb3VyY2UgT3duZXIgYXMgUk8AFA1BdXRob3JpemF0aW9uIFNlcnYAIQZBUwA7DVByb3RlY3RlZABICmFzIFJTCgoKClJPLS0-QzogR28gZ2V0IG15IHIAbwcKQy0tPlJPOiBSZWRpcmVjdCB0byBBUy9BRQAvBkFTOiBMb2cgaW4sIGEAgQIHZSBjAIFHBQpBUwAqEwAVBwBrCEhhbmQAKQcAPAUgZ3JhbnQKCmFsdCBzAIFGBnN1cHBsaWVkIGtleQpDAG4GVG9rZW4gcmVxdWVzdCAoADAFKQpBUwCBDAZnZW5lcmF0ZSB0ACIFYW4ANwUva2V5cGFpcgAiBUMAPAgmIEsAEAtlbHMAgTcIAE8pICYga2V5AGYYLCBhc3NvY2lhdGUgd2l0aACBQQUAcBIKZW5kCgpDLT5SUzogUgCBUQdpbmNsdWRpbmcAgT4Lc2lnbmVkAEEKAIIkBnRydWN0dXJlZACBbQYKUlMARAZjaGVjawCCAAdzaWduYXR1cmUgLyBkZWNyeXB0AB8PUGFycwCCLgcAOQlVbnBhY2sAgncFAIIYBWludHJvc3BlY3RpbwBiBkFTOiBzZW4AdAcgKG5vdABiCikgdG8AJQ9BAIEVBwAvBWtleSAocHVibGljIG9yIHNoYXJlZCkAgwIGZGF0YWJhc2UAgUUJbG9vayB1cABhCGxvY2FsLwAtBiBEQikAHQthAIQoBgCCUAUAgX4OAIQsCACCBAp1c2luZwCEWAUAGw9pZ2h0cwCDNQoAgm4HAIJbBgCCXQVDOiByZXR1cm4AhicJ&s=modern-blue
> )
>
> The client is oblivious to the token just like always. This is
> intentional. The RS has the same options to figure out how to process the
> token.
>
>  — Justin
>
> On Nov 25, 2015, at 2:03 PM, Phil Hunt <phil.h...@oracle.com> wrote:
>
> Folks,
>
> <editor hat>
> I did not want to go here either. :-)
>
> I don’t read sec 6 as examples.  I believe this may stem from the
> pop-architecture documents having a dual role as both “architecture” and
> “use-case”.  Maybe we should clarify the purpose of the document?
>
> I believe section 6 is talking about threat mitigation assumptions based
> on the examples that need to be implemented.  I am assuming these are
> requirements that the other specifications SHOULD implement.
>
> <personal hat>
> I do not believe we have discussed Opaque PoP tokens and any inherent
> risks because the client is not or is unable to validate the authenticity
> of the token.  Does this introduce the possibility of a MITM attack where a
> client can be convinced to sign requests for an attacker?
>
> If we want to include opaque PoP, I think we need to take a pause and
> consider / discuss any threats here.
>
> I find the desire for opaque PoP tokens to be a bit contradictory. If
> we’re saying we don’t want to trust TLS alone (e.g. because of
> load-balancer termination), why would we then say, but we are perfectly
> willing to accept it worked for the OAuth AS exchanges?  Maybe I was very
> wrong here, but my assumption all along is that for PoP we’re talking about
> end-to-end authentication of all parties except in the case of 3.3 where we
> simply want to protect an access token over a non-TLS HTTP connection.
>
>
> Phil
>
> @independentid
> www.independentid.com
> phil.h...@oracle.com
>
> On Nov 25, 2015, at 10:48 AM, Brian Campbell <bcampb...@pingidentity.com>
> wrote:
>
> While I can't say I disagree with the deeper existential questions about
> the draft that Justin raises, I was trying not to go there and rather just
> point out concerns with the newly added text.
>
> The text Phil cites from Sec 6 doesn't say the client must be able to
> parse and verify the token. It's an assumption to simplify the examples
> that follow and still the token is opaque to the client. I reread the whole
> draft (reluctantly) and there's nothing that says the token has to be
> non-opaque to the client. And it does talk about reference style tokens and
> encrypted tokens, both of which rely on the opaqueness to the client.
>
> On Wed, Nov 25, 2015 at 11:27 AM, Justin Richer <jric...@mit.edu> wrote:
>
>> Right, I read that as text for describing the examples and not for
>> describing requirements.
>>
>> The token itself doesn’t have to be signed at all.
>>
>>  — Justin
>>
>> On Nov 25, 2015, at 1:05 PM, Phil Hunt <phil.h...@oracle.com> wrote:
>>
>> Ok. Well this was requested by Kathleen because of this paragraph in Sec
>> 6.…
>>
>>
>>    To simplify the subsequent description we assume in the PoP architecture
>>
>>    that the token itself is digitally signed by the authorization server
>>
>>    and therefore cannot be modified.
>>
>>
>> Please
>> Phil
>>
>> @independentid
>> www.independentid.com
>> phil.h...@oracle.com
>>
>> On Nov 25, 2015, at 9:33 AM, Justin Richer <jric...@mit.edu> wrote:
>>
>> The token doesn’t have to be signed and the client doesn’t have to verify
>> the signature on the token. That’s not PoP. The request has to be signed in
>> a way that includes the token. The token itself can still be opaque. The
>> *key* material can’t be opaque to the client, but the *token* material
>> still is.
>>
>> I agree with Brian that this statement is misleading.
>>
>> The examples use a signed token but that is absolutely not a requirement.
>> Maybe the examples shouldn’t all use one style.
>>
>> What’s most difficult about this particular spec is that it’s very
>> hand-wavy, saying “this is kinda a thing that kinda works like this”
>> without saying how to actually do it. I’m honestly not sure it’s worth
>> publishing as an RFC in its own right but I’m not going to stand in its way.
>>
>>  — Justin
>>
>> On Nov 25, 2015, at 12:14 PM, Brian Campbell <bcampb...@pingidentity.com>
>> wrote:
>>
>> Where does it say that?
>>
>>
>>
>> On Wed, Nov 25, 2015 at 8:44 AM, Phil Hunt <phil.h...@oracle.com> wrote:
>>
>>> Except that later on we require the token be signed and the client
>>> verify that signed token. IOW mutual pop.
>>>
>>> Phil
>>>
>>> On Nov 25, 2015, at 07:30, Brian Campbell <bcampb...@pingidentity.com>
>>> wrote:
>>>
>>> Looking at the diff I noticed the following new text, which seems to
>>> conflate bearer/PoP and opaqueness to the client. A client demonstrating
>>> proof-of-possession of some key is orthogonal to the client being able to
>>> parse and understand the access token itself.
>>>
>>> "In contrast to bearer tokens [RFC6750] which call for tokens that are
>>> opaque to OAuth 2.0 clients, this specification defines the requirements
>>> for proof-of-possession ("PoP") tokens that may be parsed and verified by
>>> OAuth 2.0 clients and relying parties."
>>>
>>> On Tue, Nov 24, 2015 at 1:07 PM, Phil Hunt <phil.h...@oracle.com> wrote:
>>>
>>>> This draft addresses review comments from Kathleen and Erik raised
>>>> since the last draft.
>>>>
>>>> It may not include some of the discussion from yesterday/today.  I will
>>>> add that as the group decides.
>>>>
>>>> Cheers,
>>>>
>>>> Phil
>>>>
>>>> @independentid
>>>> www.independentid.com
>>>> phil.h...@oracle.com
>>>>
>>>> > On Nov 24, 2015, at 12:05 PM, internet-dra...@ietf.org wrote:
>>>> >
>>>> >
>>>> > A New Internet-Draft is available from the on-line Internet-Drafts
>>>> directories.
>>>> > This draft is a work item of the Web Authorization Protocol Working
>>>> Group of the IETF.
>>>> >
>>>> >        Title           : OAuth 2.0 Proof-of-Possession (PoP) Security
>>>> Architecture
>>>> >        Authors         : Phil Hunt
>>>> >                          Justin Richer
>>>> >                          William Mills
>>>> >                          Prateek Mishra
>>>> >                          Hannes Tschofenig
>>>> >       Filename        : draft-ietf-oauth-pop-architecture-06.txt
>>>> >       Pages           : 23
>>>> >       Date            : 2015-11-24
>>>> >
>>>> > Abstract:
>>>> >   The OAuth 2.0 bearer token specification, as defined in RFC 6750,
>>>> >   allows any party in possession of a bearer token (a "bearer") to get
>>>> >   access to the associated resources (without demonstrating possession
>>>> >   of a cryptographic key).  To prevent misuse, bearer tokens must be
>>>> >   protected from disclosure in transit and at rest.
>>>> >
>>>> >   Some scenarios demand additional security protection whereby a
>>>> client
>>>> >   needs to demonstrate possession of cryptographic keying material
>>>> when
>>>> >   accessing a protected resource.  This document motivates the
>>>> >   development of the OAuth 2.0 proof-of-possession security mechanism.
>>>> >
>>>> >
>>>> > The IETF datatracker status page for this draft is:
>>>> > https://datatracker.ietf.org/doc/draft-ietf-oauth-pop-architecture/
>>>> >
>>>> > There's also a htmlized version available at:
>>>> > https://tools.ietf.org/html/draft-ietf-oauth-pop-architecture-06
>>>> >
>>>> > A diff from the previous version is available at:
>>>> >
>>>> https://www.ietf.org/rfcdiff?url2=draft-ietf-oauth-pop-architecture-06
>>>> >
>>>> >
>>>> > Please note that it may take a couple of minutes from the time of
>>>> submission
>>>> > until the htmlized version and diff are available at tools.ietf.org.
>>>> >
>>>> > Internet-Drafts are also available by anonymous FTP at:
>>>> > ftp://ftp.ietf.org/internet-drafts/
>>>> >
>>>> > _______________________________________________
>>>> > 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
>>>>
>>>
>>>
>>>
>>> --
>>> [image: Ping Identity logo] <https://www.pingidentity.com/>
>>> Brian Campbell
>>> Distinguished Engineer
>>> Ping Identity
>>> @ bcampb...@pingidentity.com [image: phone] +1 720.317.2061 [image:
>>> twitter] @pingidentity Connect with us!
>>> <https://www.pingidentity.com/>[image: pingidentity.com]
>>> <https://www.pingidentity.com/>
>>> <https://ping.force.com/Support/PingIdentityCommunityHome>[image:
>>> pingidentity.com]
>>> <https://ping.force.com/Support/PingIdentityCommunityHome>
>>> [image: twitter logo]
>>> <http://www.glassdoor.com/Overview/Working-at-Ping-Identity-EI_IE380907.11,24.htm>
>>>  [image:
>>> twitter logo] <https://twitter.com/pingidentity> [image: youtube logo]
>>> <https://www.youtube.com/user/PingIdentityTV> [image: LinkedIn logo]
>>> <https://www.linkedin.com/company/21870> [image: Facebook logo]
>>> <https://www.facebook.com/pingidentitypage> [image: Google+ logo]
>>> <https://plus.google.com/u/0/114266977739397708540> [image: slideshare
>>> logo] <http://www.slideshare.net/PingIdentity> [image: flipboard logo]
>>> <http://flip.it/vjBF7> [image: rss feed icon]
>>> <https://www.pingidentity.com/blogs/>
>>>
>>>
>>
>>
>> --
>> [image: Ping Identity logo] <https://www.pingidentity.com/>
>> Brian Campbell
>> Distinguished Engineer
>> Ping Identity
>> @ bcampb...@pingidentity.com [image: phone] +1 720.317.2061 [image:
>> twitter] @pingidentity Connect with us!
>> <https://www.pingidentity.com/>[image: pingidentity.com]
>> <https://www.pingidentity.com/>
>> <https://ping.force.com/Support/PingIdentityCommunityHome>[image:
>> pingidentity.com]
>> <https://ping.force.com/Support/PingIdentityCommunityHome>
>> [image: twitter logo]
>> <http://www.glassdoor.com/Overview/Working-at-Ping-Identity-EI_IE380907.11,24.htm>
>>  [image:
>> twitter logo] <https://twitter.com/pingidentity> [image: youtube logo]
>> <https://www.youtube.com/user/PingIdentityTV> [image: LinkedIn logo]
>> <https://www.linkedin.com/company/21870> [image: Facebook logo]
>> <https://www.facebook.com/pingidentitypage> [image: Google+ logo]
>> <https://plus.google.com/u/0/114266977739397708540> [image: slideshare
>> logo] <http://www.slideshare.net/PingIdentity> [image: flipboard logo]
>> <http://flip.it/vjBF7> [image: rss feed icon]
>> <https://www.pingidentity.com/blogs/>
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org
>> https://www.ietf.org/mailman/listinfo/oauth
>>
>>
>>
>>
>>
>
>
> --
> [image: Ping Identity logo] <https://www.pingidentity.com/>
> Brian Campbell
> Distinguished Engineer
> Ping Identity
> @ bcampb...@pingidentity.com [image: phone] +1 720.317.2061 [image:
> twitter] @pingidentity Connect with us!
> <https://www.pingidentity.com/>[image: pingidentity.com]
> <https://www.pingidentity.com/>
> <https://ping.force.com/Support/PingIdentityCommunityHome>[image:
> pingidentity.com]
> <https://ping.force.com/Support/PingIdentityCommunityHome>
> [image: twitter logo]
> <http://www.glassdoor.com/Overview/Working-at-Ping-Identity-EI_IE380907.11,24.htm>
>  [image:
> twitter logo] <https://twitter.com/pingidentity> [image: youtube logo]
> <https://www.youtube.com/user/PingIdentityTV> [image: LinkedIn logo]
> <https://www.linkedin.com/company/21870> [image: Facebook logo]
> <https://www.facebook.com/pingidentitypage> [image: Google+ logo]
> <https://plus.google.com/u/0/114266977739397708540> [image: slideshare
> logo] <http://www.slideshare.net/PingIdentity> [image: flipboard logo]
> <http://flip.it/vjBF7> [image: rss feed icon]
> <https://www.pingidentity.com/blogs/>
>
>
>
> _______________________________________________
> 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
>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>
>
>
>


-- 

Best regards,
Kathleen
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to