Re: [OAUTH-WG] [token-exchange] exchanging between issuers/domains

Bill Burke <bburke@redhat.com> Sat, 29 July 2017 14:46 UTC

Return-Path: <bburke@redhat.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 09C81126E3A for <oauth@ietfa.amsl.com>; Sat, 29 Jul 2017 07:46:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.021
X-Spam-Level:
X-Spam-Status: No, score=-5.021 tagged_above=-999 required=5 tests=[HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001, SPF_HELO_PASS=-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 8uY8WsPZrQUY for <oauth@ietfa.amsl.com>; Sat, 29 Jul 2017 07:46:24 -0700 (PDT)
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 75CA2126C7A for <oauth@ietf.org>; Sat, 29 Jul 2017 07:46:24 -0700 (PDT)
Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id EFC9BC11B93C; Sat, 29 Jul 2017 14:46:23 +0000 (UTC)
DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com EFC9BC11B93C
Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com
Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=bburke@redhat.com
Received: from ovpn-116-148.phx2.redhat.com (ovpn-116-148.phx2.redhat.com [10.3.116.148]) by smtp.corp.redhat.com (Postfix) with ESMTP id 742195C8AB; Sat, 29 Jul 2017 14:46:23 +0000 (UTC)
To: Brian Campbell <bcampbell@pingidentity.com>
Cc: oauth <oauth@ietf.org>
References: <1b5f403e-aa93-3cfe-ab39-a471cf864e5d@redhat.com> <46fff444-9107-7a43-1854-88c92aaccd90@redhat.com> <CA+k3eCQCKtBct-iqxJCscad3rkUDUyx-MDbGa0Ysb995wX2BUA@mail.gmail.com> <fa2e98ad-cb95-a142-7989-4bfd422de06b@redhat.com> <CA+k3eCTzTO54xvekYoY=TkL4dxYupg+C6-K9dsduqCS9NLspdg@mail.gmail.com>
From: Bill Burke <bburke@redhat.com>
Message-ID: <dafbf97e-1bf5-6314-85aa-58d4f4f6eab8@redhat.com>
Date: Sat, 29 Jul 2017 10:46:22 -0400
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:52.0) Gecko/20100101 Thunderbird/52.2.1
MIME-Version: 1.0
In-Reply-To: <CA+k3eCTzTO54xvekYoY=TkL4dxYupg+C6-K9dsduqCS9NLspdg@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------FD89C76AA63C9F7EBD3F0522"
Content-Language: en-US
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Sat, 29 Jul 2017 14:46:24 +0000 (UTC)
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/IQJL82EWoJmZiAIgvu4-5HoY85w>
Subject: Re: [OAUTH-WG] [token-exchange] exchanging between issuers/domains
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: Sat, 29 Jul 2017 14:46:27 -0000

So, you're saying the STS has to define a subject_type for each external 
token the client wants to exchange from?  A type that is potentially 
proprietary and different between each and every STS? On the opposite 
end, when you want to convert to an external token, the STS either has 3 
options for the client to specify that it wants an external token.  1) a 
proprietary response type, 2) a proprietary resource scheme, 3) a 
proprietary audience scheme.

Don't you think at minimum, the token-exchange spec should define a 
standard way to do OAuth to OAuth cross-domain exchanges?  Right now 
cross-domain exchanges are proprietary and completely up to the target 
STS on how it wants the client to formulate a cross-domain exchange.  I 
still think a "subject_issuer" and "requested_issuer" are the clearest 
and simplest way to enable such an interaction.


On 7/28/17 6:28 PM, Brian Campbell wrote:
> The urn:ietf:params:oauth:token-type:access_token type is an 
> "indicator that the token is a typical OAuth access token issued by 
> the authorization server in question" (see near the end of section 3 
> <https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-09#section-3>) 
> so the issuer is the given STS in that case. Cross domain is possible 
> by use of other token types that are not opaque to the STS where the 
> issuer can be inferred from the token.
>
> On Fri, Jul 28, 2017 at 3:27 PM, Bill Burke <bburke@redhat.com 
> <mailto:bburke@redhat.com>> wrote:
>
>     Thanks for replying,
>
>     The Introduction of the spec implies that inter-security-domain
>     exchange is supported: "
>
>       A Security Token Service (STS) is a service capable of validating and
>         issuing security tokens, which enables clients to obtain appropriate
>         access credentials for resources in heterogeneous environments or
>         across security domains.
>     "
>
>     But with the current API if you want to exchange an external token to an internal one, there is no way for the STS to identify where the subject_token originated.  Are you saying that an STS cannot accept tokens from an external domain?
>
>     i.e
>
>     subject_token: <opaque-string>
>
>     subject_token_type: urn:ietf:params:oauth:token-type:access-token
>
>     There's just no way for the STS to know where the subject_token
>     came from because the subject_token can be completely opaque.
>
>     Now, on the flip side, if you are converting from an internal
>     token to an external one, the audience parameter is just too
>     undefined.  For example, how could you specify that you want a
>     token for an external client of an external issuer.  Client ids
>     are opaque in OAuth, and issuer id isn't even something that is
>     defined at all.  In OpenID connect, an issuer id can be any URL.
>
>     IMO, adding optional "subject_token_issuer" and "requested_issuer"
>     parameters only clarifies and simplifies the cross-domain case.  
>     If you don't like "issuer" maybe "domain" is a better word?
>
>     Thanks for replying,
>
>     Bill
>
>
>
>
>
>     On 7/28/17 4:39 PM, Brian Campbell wrote:
>>     In general, an instance of an AS/STS can only issue tokens from
>>     itself. The audience/resource parameters tell the AS/STS where
>>     the requested token will be used, which will influence the
>>     audience of the token (and maybe other aspects). But the issuer
>>     of the requested token will be the AS/STS that issued it. A cross
>>     domain exchange could happen by a client presenting a
>>     subject_token from a different domain/issuer (that the AS/STS
>>     trusts) and receiving a token issued by that AS/STS suitable for
>>     the target domain.
>>
>>
>>
>>     On Fri, Jul 28, 2017 at 9:06 AM, Bill Burke <bburke@redhat.com
>>     <mailto:bburke@redhat.com>> wrote:
>>
>>         Should probably have a "subject_issuer" and "actor_issuer" as
>>         well as the "requested_issuer" too.
>>
>>         FYI, I'm actually applying this spec to write a token
>>         exchange service to connect various product stacks that have
>>         different and often proprietary token formats and architectures.
>>
>>
>>
>>         On 7/26/17 6:44 PM, Bill Burke wrote:
>>
>>             Hi all,
>>
>>             I'm looking at Draft 9 of the token-exchange spec.  How
>>             would one build a request to:
>>
>>             * exchange a token issued by a different domain to a
>>             client managed by the authorization server.
>>
>>             * exchange a token issued by the authorization server
>>             (the STS) for a token of a different issuer and different
>>             client.  In other words, for a token targeted to a
>>             specific client in a different authorization server or
>>             realm or domain or whatever you want to call it.
>>
>>             * exchange a token issued by a different issuer for a
>>             token of a different issuer and client.
>>
>>             Is the spec missing something like a "requested_issuer"
>>             identifier?  Seems that audience is too opaque of a
>>             parameter for the authz server to determine how to
>>             exchange the token.
>>
>>             Thanks,
>>
>>             Bill
>>
>>
>>
>>             _______________________________________________
>>             OAuth mailing list
>>             OAuth@ietf.org <mailto:OAuth@ietf.org>
>>             https://www.ietf.org/mailman/listinfo/oauth
>>             <https://www.ietf.org/mailman/listinfo/oauth>
>>
>>
>>         _______________________________________________
>>         OAuth mailing list
>>         OAuth@ietf.org <mailto:OAuth@ietf.org>
>>         https://www.ietf.org/mailman/listinfo/oauth
>>         <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./ 
>
>
>
> /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./