Re: [OAUTH-WG] Building on the protocol in the draft "OAuth 2.0 Token Exchange: An STS for the REST of Us" to include Authentication Tokens

Nat Sakimura <sakimura@gmail.com> Tue, 19 April 2016 21:35 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 48E4412E7E4 for <oauth@ietfa.amsl.com>; Tue, 19 Apr 2016 14:35:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 7lTYM3lziOdb for <oauth@ietfa.amsl.com>; Tue, 19 Apr 2016 14:35:38 -0700 (PDT)
Received: from mail-qk0-x230.google.com (mail-qk0-x230.google.com [IPv6:2607:f8b0:400d:c09::230]) (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 73F5812E7CD for <oauth@ietf.org>; Tue, 19 Apr 2016 14:35:37 -0700 (PDT)
Received: by mail-qk0-x230.google.com with SMTP id r184so8972503qkc.1 for <oauth@ietf.org>; Tue, 19 Apr 2016 14:35:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=NfPoEnhdRGlaQA99V+YqS432DEC+P65E28Mxbd0vb4s=; b=MdquUPXixTYWcJW11xl464T9Sr6lYvmLGo9BunPCmUSSBExzq1jRTXawWHf1zX35ip 2LllQ3y2VIBQiWlpKTKvNdNK7LN768hsm2CkurthyE3QqJQWkZVR6J4MkD6AkUbFhl38 hdKgMD+ZvMl3/8vHy/uHmSEfPCSE4HG67J0HFgq7JjqYFcxvVgfueG+C79tKYeKdIsSf VmvunZLdAy7O7DyKKGDVedjnGws55+/tEBEdiWzIqRZ0THUByMkLkRGqlKcBj5hxFHPZ K368PBmnVK5foqMpzEXf8MttN+65PHWiodX/OxfofUv8PW3+vTcBHYVHop4/2mEl3PmF RwNQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=NfPoEnhdRGlaQA99V+YqS432DEC+P65E28Mxbd0vb4s=; b=Qe6mq5fK/W+bbTUq62DvWuJllRg2l5jw9azZ3DCrrJebFpaIr7Jd4ydOYQjoaRa4fQ 2V37C8pCkO8Gfx2rl8Z9DcIx86kO40CjOLaou2Bq/1yVTJa5pyFaHJJi9r5HPmHu7Noo zi/jivzHEKirHLdL4AGXiSb/Uk+LdsJ1lUzi7u/GluxoDTrvpecUay6U+xkoXZEVu82R WOkS7KTTlFkE6EtqRKvQ2uGxpU0Sc7EMOe0z+4fyhIDf7VwGfraEsLsaVOF4WPo8Grov GW5owOjJ6cxFmimN2zmfmALsRKelgK7+VXUjSHF8V0Mz3kolzh8AyH3Yv01IAfRX3LZx zZfA==
X-Gm-Message-State: AOPr4FW7lkpC1p4EbC4qPfHJv6+4qmWDwLwXzakZo5dtHzLgILRXpGXDlQ2Z3i81T8HCrLzJ8Rgx87/ZDPgr+Q==
X-Received: by 10.55.204.197 with SMTP id n66mr6864752qkl.95.1461101736499; Tue, 19 Apr 2016 14:35:36 -0700 (PDT)
MIME-Version: 1.0
References: <FF8F219E-AB2E-48F5-AD90-DEA783343C1B@verisign.com> <A85A7E53-1AE2-4141-B6AF-FE3E19DEBA75@ve7jtb.com> <8B748252-9AE2-4824-923B-00CD46CB8D68@verisign.com> <CABzCy2CWBE0=3ruXYdgnS3c_Ws8kn-=qZzRXxfWP6Grznv7OgQ@mail.gmail.com> <5958E90F-EF8C-4641-96C1-A9077B450D53@verisign.com>
In-Reply-To: <5958E90F-EF8C-4641-96C1-A9077B450D53@verisign.com>
From: Nat Sakimura <sakimura@gmail.com>
Date: Tue, 19 Apr 2016 21:35:25 +0000
Message-ID: <CABzCy2B=8E3-irnDVdWK2J3A2s827Ec85s9OMPgUbsfz694n6A@mail.gmail.com>
To: "Fregly, Andrew" <afregly@verisign.com>, John Bradley <ve7jtb@ve7jtb.com>, "oauth@ietf.org" <oauth@ietf.org>
Content-Type: multipart/alternative; boundary="001a1149a45cfc20f10530dd411e"
Archived-At: <http://mailarchive.ietf.org/arch/msg/oauth/huQChOP21mHpGbJIUHLolXlBZok>
Subject: Re: [OAUTH-WG] Building on the protocol in the draft "OAuth 2.0 Token Exchange: An STS for the REST of Us" to include Authentication Tokens
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.17
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: Tue, 19 Apr 2016 21:35:41 -0000

Hi Andrew,

In OAuth 2.0, the resource owner authentication /end user authentication is
out of scope. What it deals with is "client authentication". They should
not be mixed up. There is no end user identity nor authentication token in
the OAuth. You cannot do end user authentication with pure OAuth. For that,
you have to rely on something like OpenID Connect.

As John noted, it is perfectly fine to chain the external authentication
and the internal authorization. It is often done. It is just that the
RFC6749 Authz server is an RP of OpenID Connect or SP of SAML. Nothing
precludes it.

If you really want to avoid the front channel re-auth with prompt=none,
which is more secure and proper ways to do, but just to make sure that the
user still exists in the authentication service, you can infer it by making
a userinfo request to the userinfo endpoint of OpenID Connect. It would
fail in various reasons, but would certainly fail if the user does not
exist anymore. Other error conditions like the user revoked the
access/refresh token etc. would cause the same invalid_token error though.

Best,

Nat

P.S. I do not see why the RFCs you sited are relevant here. I guess you are
talking about RFC7521-7523 ;-)

RFC7251 AES-CCM Elliptic Curve Cryptography (ECC) Cipher Suites for TLS
RFC7252 The Constrained Application Protocol (CoAP)
RFC7253 The OCB Authenticated-Encryption Algorithm







2016年4月20日(水) 5:34 Fregly, Andrew <afregly@verisign.com>:

> Thanks for your reply Nat.
>
> Does your approach match with an IETF OAuth RFC or Draft describing how an
> Authorization Service can accept and verify an authentication token
> provided by a client during the authorization process? If so, please point
> me to that. The only RFCs I have seen that address this are RFCs 7251, 7252
> and 7253, and they all have a requirement that an “audience” claim
> corresponding to the Authorization Service is in the authentication token.
> Getting that claim into an authentication token provided by an
> Organization’s Identity provider seems to be my fundamental problem.
>
> Thanks,
>       Andy
>
> From: Nat Sakimura <sakimura@gmail.com>
> Date: Tuesday, April 19, 2016 at 4:13 PM
> To: Andrew Fregly <afregly@verisign.com>, John Bradley <ve7jtb@ve7jtb.com>,
> "oauth@ietf.org" <oauth@ietf.org>
>
> Subject: Re: [OAUTH-WG] Building on the protocol in the draft "OAuth 2.0
> Token Exchange: An STS for the REST of Us" to include Authentication Tokens
>
> Get OpenID Connect id_token by the authentication request with prompt=none
> and verifying the sub to be the same with what you expected seem to suffice
> your needs. Am I missing something?
> On Wed, Apr 20, 2016 at 05:05 Fregly, Andrew <afregly@verisign.com> wrote:
>
>> Thanks for your response John. I also got a good response from Brian
>> Campbell and appreciate that. I will respond separately to Brian’s response
>> as I think it would keep things clearer to do that.
>>
>> The problem we have for using OpenID Connect is that it combines the role
>> of Authentication Service with the role of Authorization Service. Perhaps
>> the following description of what we want to do will clarify why this won’t
>> work for us:
>>
>> The basic problem statement is that we need to have a client application
>> authorized by a Service Provider based on proof that a user is currently a
>> member of some organization. This assumes the organization has previously
>> established some level of authorized access with the Service Provider.
>>
>> Here is an example: Suppose I am a member of SomeOrg Inc. Suppose SomeOrg
>> Inc. is doing research that requires it to gather data over the Internet
>> from a number of data providers. The data providers require authentication
>> and proof of organizational membership in order to authorize various levels
>> of access to their data. The data providers do not consider having an
>> account with them or a Public Identity Provider to be suitable for proving
>> that I am still a member of SomeOrg at time of authentication. They would
>> have no way of knowing whether or not my relationship with SomeOrg still
>> exists at that time. The data providers would therefore like the Client
>> software to authenticate me against SomeOrgs Identity Provider. This would
>> be good proof that I am still a member of SomeOrg at the time I
>> authenticate. This authentication would enable the data providers
>> Authorization Server to grant me access appropriate to a member of
>> SomeOrg.  Note that as a prerequisite to all of this, SomeOrg will have
>> used an out-of-band process to set up a trust relationship for SomeOrg's
>> Identity Provider with the data provider’s Authorization Service, and will
>> have negotiated authorization claims to be granted to SomeOrgs members.
>>
>> What I am having difficulty with is in knitting together an approach
>> based on the he OpenID Connect specifications, SAML specifications, and
>> OAuth RFCs and drafts in a way that supports the above use case end-to-end.
>> The OAuth RFCs and drafts almost get me there. What seems to be missing is
>> a way of telling an Identity Provider the URL for the Authorization Service
>> (the required Audience claim in an authentication assertion as defined in
>> RFCs 7251, 7252 and 7253), and then a requirement that the Identity
>> Providers put the supplied Audience Identifier into Authentication Tokens.
>> Perhaps a little further back-and-forth with Brian will resolve this.
>>
>> I can go into deeper detail if needed. If this is off-topic for the OAuth
>> working group, let me know.
>>
>> Thanks,
>> Andrew Fregly
>> Verisign Inc.
>>
>>
>> From: John Bradley <ve7jtb@ve7jtb.com>
>> Date: Tuesday, April 19, 2016 at 2:06 PM
>> To: Andrew Fregly <afregly@verisign.com>
>> Cc: "oauth@ietf.org" <oauth@ietf.org>
>> Subject: Re: [OAUTH-WG] Building on the protocol in the draft “OAuth 2.0
>> Token Exchange: An STS for the REST of Us” to include Authentication Tokens
>>
>> Looking at OpenID Connect and it’s trust model for producing id_tokens
>> that assert identity may help you.
>> http://openid.net/wg/connect/
>>
>> Unfortunately I can’t quite make out what you are trying to do.
>>
>> It sort of sounds like you want an id_token from a idP and then have the
>> client exchange that assertion for another token?
>>
>> John B.
>>
>> On Apr 19, 2016, at 1:18 PM, Fregly, Andrew <afregly@verisign.com> wrote:
>>
>> I have a use case where a client application needs to authenticate with a
>> dynamically determined Identity Provider that is separate from the
>> Authorization Service that will be used issue an access token to the
>> client. The use case also requires that as part of authorization, the
>> client provides to the Authorization Service an authentication token signed
>> by an Identity Provider that the Authorization Service has a trust
>> relationship with. The trust relationship is verifiable based on the
>> Authorization Service having recorded the public keys or certificates of
>> trusted Identity Providers in a trust store, this allowing the
>> Authorization Service to verify an Identity Provider’s signature on an
>> authentication token.
>>
>> In looking at the various OAuth RFCs, particularly RFCs 7521, 7522, and
>> 7523, I see that they get me close in terms of supporting the use case.
>> What is missing is a means for solving the following problem. These RFCs
>> require that the Identity Provider put an Audience claim in the
>> authentication token. The problem with this is that I do not see in the
>> RFCs how the Identity Provider can be told who the Audience is to put into
>> the authentication token. This leads me to the title of this message. The
>> draft “OAuth 2.0 Token Exchange: An STS for the REST of Us” defines a
>> mechanism for identifying the Audience for an STS to put into a token it
>> generates. That would solve my problem except that the draft limits the
>> type of STS to being Authorization Servers. What is needed is this same
>> capability for interacting with an Identity Provider. This would enable
>> RFCs 7521, 7522 and 7523 to be useful in situation where the Identity
>> Provider needs to be told the identity of the Authorization Service.
>>
>> I am new to interacting with the IETF. I also am not an expert on the
>> RFCs or prior history of the OAuth group relative to this topic, so please
>> point me to any existing solution if this is a solved problem. Otherwise, I
>> would like to get feedback on my suggestion.
>>
>> Thanks You,
>>
>> Andrew Fregly
>> Verisign Inc.
>> _______________________________________________
>> 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
>>
>