Re: [OAUTH-WG] WGLC for draft-ietf-oauth-token-exchange-08

Brian Campbell <bcampbell@pingidentity.com> Fri, 30 June 2017 21:35 UTC

Return-Path: <bcampbell@pingidentity.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 806D012EA97 for <oauth@ietfa.amsl.com>; Fri, 30 Jun 2017 14:35:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=pingidentity.com
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 FlkXqBSPoEp9 for <oauth@ietfa.amsl.com>; Fri, 30 Jun 2017 14:35:40 -0700 (PDT)
Received: from mail-pg0-x234.google.com (mail-pg0-x234.google.com [IPv6:2607:f8b0:400e:c05::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 47E31129B75 for <oauth@ietf.org>; Fri, 30 Jun 2017 14:35:40 -0700 (PDT)
Received: by mail-pg0-x234.google.com with SMTP id f127so69083942pgc.0 for <oauth@ietf.org>; Fri, 30 Jun 2017 14:35:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pingidentity.com; s=gmail; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=T3SK9qvQZlb3UN4bxtCY6YHkwkOVCQjS1C0olzyhgFg=; b=pLoqVVZQ/+ugNSC3l6aeGRb9Z73sw/G1JPAWSmOan1ssJHvcS6vpSnL3ghMFHe2Nhe 2otNv/KGkF7/f7nAt1tsmCKxV3BjJ09SpKhHrZOLswu/YU6ZSITJJToLl/lgLfwjPSns dcQo+3vuI+YQT3+oqsCAlwd76KNB1hj4MtCao=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=T3SK9qvQZlb3UN4bxtCY6YHkwkOVCQjS1C0olzyhgFg=; b=e5pMTrGW1gnJihbUFkK9lHC0RrgeLqYeHYJ9DTzDZm54ceqmQGCXxkVAvr7hDZnryz hvM7OISRJwffRr50bjYHR/Oy6FhgkvS10LTZ9RYM3jJNKFk3ahtwUKJfD68B5SxeuRon NuWXh1JfQKVE6lz87Ewdha25FqCDBYSUtjhukZT9ZyZyfIX1lHGAw0lesIi2OTEBw/u5 yDmMY1t2ocKsic1WAONz2gw3F6ODM38MRyWqpNHEeBcnMUKBXVa54XE/4sIYNw9C6QtK g/HyqT0HvLaujjrh27DpUIh95Wl9BqPlBzn7GmUUi0XnfUef7//EPcRqkmlpbiu2UwtU Yf/w==
X-Gm-Message-State: AKS2vOzOKy8q4JW9G/7hQHRXT0JxSVdXDVDK8w2bGoyatlnRIwr+a+KN 7BWqMVzXM2co9S1wgEjZULmVb0qavwrsOLNnFc/5zrF3+Cn0k8V33pHfJwdRuA4twpGZLqmnIK4 R2NRpESo=
X-Received: by 10.101.88.197 with SMTP id e5mr23076167pgu.144.1498858539659; Fri, 30 Jun 2017 14:35:39 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.100.129.130 with HTTP; Fri, 30 Jun 2017 14:35:09 -0700 (PDT)
In-Reply-To: <858f5a6a-f68c-c616-487a-a64cd8278755@free.fr>
References: <CAGL6ep+nx=XmHOJpKHhY6WnhWpAXF4krhQhGy2TBDTKFbyVfag@mail.gmail.com> <858f5a6a-f68c-c616-487a-a64cd8278755@free.fr>
From: Brian Campbell <bcampbell@pingidentity.com>
Date: Fri, 30 Jun 2017 15:35:09 -0600
Message-ID: <CA+k3eCTbbVQM4NeMny2+9PQqCL6mgXhkmpQa0nxsdBXXrxDsOw@mail.gmail.com>
To: Denis <denis.ietf@free.fr>
Cc: oauth <oauth@ietf.org>
Content-Type: multipart/alternative; boundary="089e08234090d34b8d0553343282"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/OQrQG7sDMpRsAZdwOmDlOIwSya4>
Subject: Re: [OAUTH-WG] WGLC for draft-ietf-oauth-token-exchange-08
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.22
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: <https://mailarchive.ietf.org/arch/browse/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: Fri, 30 Jun 2017 21:35:44 -0000

Thanks for the review, Denis. And I apologize for the slow reply - I've had
a lot of different things on my plate recently. And, quite frankly, I was
sort of hoping one of the co-authors on the document might respond to your
comments. But hope only goes so far. So replies are inline below...

On Mon, Jun 5, 2017 at 5:30 AM, Denis <denis.ietf@free.fr> wrote:

> Comments on OAuth 2.0 Token Exchange draft-ietf-oauth-token-exchange-08
>
> 1. The abstract states:
>
>    "This specification defines a protocol for an HTTP- and JSON- based
>    Security Token Service (STS) by defining how to request and obtain
>    security tokens from OAuth 2.0 authorization servers, including
>    security tokens employing impersonation and delegation".
>
> The problem is that the content of the abstract does not match with the
> content of the document.
>
> The abstract clearly states that all cases of token requests are
> supported, whereas the document mandates
> the use of a subject_token parameter which restricts the scope to
> impersonation and delegation.
>
> Currently the text states:
>
>    "subject_token
>       *REQUIRED*.  A security token that represents the identity of the
>       party on behalf of whom the request is being made.  Typically, the
>       subject of this token will be the subject of the security token
>       issued in response to this request".
>
> The abstract should be changed to reflect the content of the document.
>

I don't see a discrepancy between the content of the abstract and the
content of the document.

What text or changes would you suggest in the abstract?




> 2. The text states on page 4:
>
>    "The scope of this specification is limited to the definition of a
>    basic request and response protocol for an STS-style token exchange
>    utilizing OAuth 2.0.  Although a few new JWT claims are defined that
>    enable delegation semantics to be expressed, the specific syntax,
>    semantics and security characteristics of the tokens themselves (both
>    those presented to the AS and those obtained by the client) are
>    explicitly out of scope and no requirements are placed on the trust
>    model in which an implementation might be deployed".
>
> These statements are contradictory. One parameter of the request is
> mandatory (i.e. subject_token)
> but there is no indication of the kind of treatment which should be done
> with this parameter so that
> it will be taken into consideration one way or another in the token that
> will be issued.
>
> This document by itself would be insufficient to allow any kind of
> interoperability.
> Conformance to this document would not mean anything.
>

The token exchange framework promotes interoperability in the form of
common patterns and parameters that can be supported in libraries,
products, and services. It facilitates deployments like this one
https://help.salesforce.com/articleView?id=remoteaccess_oaut
h_asset_token_flow.htm or this one https://developer.box.com/docs
/getting-started-with-new-box-view, for example.




>
> 3. On page 7, the text states:
>
>    "subject_token
>       REQUIRED.  A security token that represents the identity of the
>       party on behalf of whom the request is being made".
>
> It is understood that one implementation is already using this parameter
> to place in it a security token.
> Since this parameter is indicated as REQUIRED, it is not understandable
> why a security token shall necessarily be used.
> There are other means for the STS to identify the "party on behalf of whom
> the request is being made".
>
> Please add a rational.
>

I don't understand what kind of rational you are looking for here. Can you
suggest some specific text for the document that would address the concern
you have?



>
> In addition, what the STS will do, can do or should do with this parameter
> is left undefined.
>
>
> 4. On page 7, the text states:
>
>    "subject_token
>       REQUIRED.  (...)  Typically, the subject of this token will be
>       the subject of the security token issued in response to this
>       request".
>
> This sentence is quite hard to understand since the specific syntax,
> semantics and security characteristics of the tokens themselves
> are explicitly out of scope. The key point is what the STS should do with
> this parameter: this is left undefined.
>

I don't view the sentence as difficult to understand.  Maybe that's because
I wrote it?  But it is true that typically it is the case that the subject
of the inbound token will be the subject of the issued token. I don't know
how else to say it. Please offer suggested text, if you believe there's a
way to say it that is easier to understand.




>
> 5. The text states:
>
>    " (...) Additional
>    profiles may provide more detailed requirements around the specific
>    nature of the parties and trust involved, such as whether signing
>    and/or encryption of tokens is needed or if proof-of-possession style
>    tokens will be required or issued;
>
> Tokens are always signed. Please modify the sentence accordingly.
>

A token might well be cryptographically secure random sequence of
characters that reference data that can be looked up by the appropriate
parties. Or a token might be an AEAD symmetrically encrypted JWT. So no,
tokens are not always signed.




>
>
> 6. The following sentence is important and is being noticed.
>
>    The security tokens obtained could be used in a number of contexts,
>    the specifics of which are also beyond the scope of this
>    specification.
>
> Changing the "could" into a "may" would however be more appropriate.
>

Agreed, I'll make that change.


>
>
> 7. In section  2.1 request, the text defines:
>
>    resource
>       OPTIONAL.  Indicates the physical location of the target service
>       or resource where the client intends to use the requested security
>       token.
>
> and
>
>    audience
>       OPTIONAL.  The logical name of the target service where the client
>       intends to use the requested security token.
>
> If the resource or the audience parameter is being used, the STS will have
> the ability to know exactly which individual
> or entity has accessed which target service and may keep a log of that
> activity. It would be in a position to act as Big Brother.
> This should be clearly indicated in a section that is currently missing :
> "7. Privacy Considerations". See a text proposal hereafter.
>
> However, there is indeed the need to restrict the use of tokens to
> specific targets. The key point is that the target service
> must be able to recognize itself that the token is indeed targeted to it.
> As an example, a challenge may be requested to
> the target service and that challenge may then be placed into a specific
> filed of the token. The target service may then verify
> that the value included in the token is the one that has been recently
> provided.
>
> A parameter specifying the type of the control value and the value of the
> control should be added.
> This parameter would be called a target_id (tid). It would solve the Big
> Brother case.
>

That is both beyond the scope of this document and potentiality applicable
to a broader context of use. I'd suggest you write an individual draft for
the concept, if you want to pursue it.



>
>
> 8. The Security Considerations section states:
>
>    "In addition, both delegation and impersonation introduce unique
>    security issues.  Any time one principal is delegated the rights of
>    another principal, the potential for abuse is a concern.  The use of
>    the "scp" claim is suggested to mitigate potential for such abuse, as
>    it restricts the contexts in which the delegated rights can be
>    exercised".
>
> Section 4.2 defines the "scp" (Scopes) claim in the following way:
>
>    The "scp" claim is an array of strings, each of which represents an
>    OAuth scope granted for the issued security token.  Each array entry
>    of the claim value is a scope-token, as defined in Section 3.3 of
>    OAuth 2.0 [RFC6749].
>
> Section 3.3 from RFC 6749 defines the Access Token Scope as:
>
>    "The authorization and token endpoints allow the client to specify the
>    scope of the access request using the "scope" request parameter.  In
>    turn, the authorization server uses the "scope" response parameter to
>    inform the client of the scope of the access token issued.
>    The value of the scope parameter is expressed as a list of space-
>    delimited, case-sensitive strings.  The strings are defined by the
>    authorization server".
>
> Section 5.4.1 Registry Contents defines scp as:
>
>    o  Claim Name: "scp"
>    o  Claim Description: Scope Values
>    o  Change Controller: IESG
>    o  Specification Document(s): Section 4.2 of [[ this specification ]]
>
> Since the "strings are defined by the authorization servers", what a scope
> may mean is subject to multiple interpretations.
> The current definition of scp is insufficient to allow any kind of
> interoperability, now or in the future.
>
> It is thus unclear how the use of the "scp" claim might mitigate the risk.
>

Scoping the token restricts what the token can be used for which limits the
impact of a compromised or misused token. The scope values are interpreted
by the parties involved just as with regular OAuth.



>
>
> 9. This document is currently targeted to become a Standards Track
> document.
>
> RFC 6410 recognizes two maturity levels:
>
>    - the First Maturity Level: Proposed Standard
>    - the Second Maturity Level: Internet Standard
>
> It is not believed that currently it is possible to construct two
> independent interoperating implementations
> looking at this document only. Unless more guidance is provided, this
> document should be targeted to "Experimental".
>

I completely disagree. And would also note that the the document's intended
status has been stable and unquestioned by this WG for several years.



>
> 10. Text proposal for a new section "7. Privacy Considerations".
>
>    7. Privacy Considerations
>
>    7.1. Resource and audience parameters
>
>    The use of any these two parameters allow the STS to know which
>    target servers are being accessed by any party making a token
>    request.  Any STS is then able to log token requests.  This is not
>    a problem if the resource owner and the target server are collocated,
>    but this document is not restricted to that case.
>
>    For the other cases, it should be noticed that the STS will be in
>    position to act as Big Brother.  When privacy is a concern, the use
>    of these parameters is deprecated and the use of a "tid" parameter
>    is recommended.
>
>
I will add a privacy considerations with mention of being able to track the
target systems intended to be accessed by the party requesting a token.




>
>
>
>
Denis
>
> All,
>
> We are starting a WGLC on the Token Exchange document:
> https://www.ietf.org/id/draft-ietf-oauth-token-exchange-08
>
> Please, review the document and provide feedback on any issues you see
> with the document.
>
> The WGLC will end in two weeks, on June 17, 2017.
>
> Regards,
>  Rifaat and Hannes
>
>
>
> _______________________________________________
> OAuth mailing listOAuth@ietf.orghttps://www.ietf.org/mailman/listinfo/oauth
>
>
>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>
>

-- 
*CONFIDENTIALITY NOTICE: This email may contain confidential and privileged 
material for the sole use of the intended recipient(s). Any review, use, 
distribution or disclosure by others is strictly prohibited.  If you have 
received this communication in error, please notify the sender immediately 
by e-mail and delete the message and any file attachments from your 
computer. Thank you.*