Re: [OAUTH-WG] Indicating sites where a token is valid

Evan Gilbert <uidude@google.com> Thu, 13 May 2010 05:41 UTC

Return-Path: <uidude@google.com>
X-Original-To: oauth@core3.amsl.com
Delivered-To: oauth@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 5B4383A6A4B for <oauth@core3.amsl.com>; Wed, 12 May 2010 22:41:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -103.743
X-Spam-Level:
X-Spam-Status: No, score=-103.743 tagged_above=-999 required=5 tests=[AWL=-1.567, BAYES_50=0.001, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_83=0.6, J_CHICKENPOX_84=0.6, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GqOUeHawh0Qh for <oauth@core3.amsl.com>; Wed, 12 May 2010 22:41:49 -0700 (PDT)
Received: from smtp-out.google.com (smtp-out.google.com [216.239.44.51]) by core3.amsl.com (Postfix) with ESMTP id 26EB33A6961 for <oauth@ietf.org>; Wed, 12 May 2010 22:41:42 -0700 (PDT)
Received: from wpaz9.hot.corp.google.com (wpaz9.hot.corp.google.com [172.24.198.73]) by smtp-out.google.com with ESMTP id o4D5fSCM020199 for <oauth@ietf.org>; Wed, 12 May 2010 22:41:28 -0700
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1273729288; bh=iWawmiy8KukLzwSsl60LVgDTiLg=; h=MIME-Version:In-Reply-To:References:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=eADmh5MJrz1drzEVpgK6cbKqcyrT1LlxFCBAv8lSF5/+hXDW+rcS/TOOI1iKItVjt +84tgofqt9l9TsD4/YdVQ==
DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=mime-version:in-reply-to:references:from:date:message-id: subject:to:cc:content-type:x-system-of-record; b=ALkK5xSmt5yg5jxrNaDmv6KKz0mVtjwKfTiwdrkVnsPsBgfle+yhbPruHFgR8cPKu hRQPn7mAHgpMyFablXU4g==
Received: from qyk30 (qyk30.prod.google.com [10.241.83.158]) by wpaz9.hot.corp.google.com with ESMTP id o4D5fFil014998 for <oauth@ietf.org>; Wed, 12 May 2010 22:41:27 -0700
Received: by qyk30 with SMTP id 30so1336236qyk.16 for <oauth@ietf.org>; Wed, 12 May 2010 22:41:26 -0700 (PDT)
Received: by 10.229.250.73 with SMTP id mn9mr916496qcb.170.1273729284509; Wed, 12 May 2010 22:41:24 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.229.7.136 with HTTP; Wed, 12 May 2010 22:41:04 -0700 (PDT)
In-Reply-To: <255B9BB34FB7D647A506DC292726F6E112633D9594@WSMSG3153V.srv.dir.telstra.com>
References: <255B9BB34FB7D647A506DC292726F6E11263073D6D@WSMSG3153V.srv.dir.telstra.com> <4BE3A5DC.5030601@lodderstedt.net> <BC9EED4C-B667-4AC2-A663-CEAC0B7CB620@lodderstedt.net> <AANLkTincZ8_0-t2r_Ey9BestA_knMciYsxRLyHcOvSVO@mail.gmail.com> <g2xfd6741651005071106if93ba794q7e9739669eb22fc2@mail.gmail.com> <90C41DD21FB7C64BB94121FBBC2E72343B3AB46E1F@P3PW5EX1MB01.EX1.SECURESERVER.NET> <D24C564ACEAD16459EF2526E1D7D605D0C8D22ED62@IMCMBX3.MITRE.ORG> <AANLkTilkUA9i-WZPv8PqPsxiJf5_1SuiCb_GOTdcwtPX@mail.gmail.com> <AANLkTilNNyKvpbzCYfc__AvY1rJKqXE7KN8VL-m_CF-L@mail.gmail.com> <255B9BB34FB7D647A506DC292726F6E112633D9594@WSMSG3153V.srv.dir.telstra.com>
From: Evan Gilbert <uidude@google.com>
Date: Wed, 12 May 2010 22:41:04 -0700
Message-ID: <AANLkTim0PNhUJAi1ZuDjB8feKh2Sb_OMoNz7AlDTYO6P@mail.gmail.com>
To: "Manger, James H" <James.H.Manger@team.telstra.com>
Content-Type: multipart/alternative; boundary="0016362845088b127b048673359d"
X-System-Of-Record: true
Cc: OAuth WG <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Indicating sites where a token is valid
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/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: Thu, 13 May 2010 05:41:50 -0000

Thanks for the response - feedback inline...

On Wed, May 12, 2010 at 5:09 PM, Manger, James H <
James.H.Manger@team.telstra.com> wrote:

> Evan,
>
> > Clients need to know the following in advance:
> > 1. The scope to use to request access to a protected resource
> > 2. The API endpoint to call to access the the protected resource
> >
> > Solving the question of what URL prefixes are valid to send the token
> > to seems like it needs to follow answers for #1 and #2 (or at least #2).
>
> I agree that a client needs #2 to *start* using an API.
> The issue is what the client needs as it follows redirects and links
> through the API and beyond.


>
> > As an example, to support #2 we might want to return JSON
> > configuration about all of the APIs that are available
> > ({'contacts.get': 'http:/...', 'activities.post': 'http://...'}).
> > This would supersede the need for the sites parameter.
>
> I don't like this specific idea of mixing API discover with the credential
> format.


Seems like if it's OK to send a list of valid "sites" for a credential it
should be OK to list the API endpoints.

Also, this discovery could be in a separate process - doesn't have to be
with the token response. The key point is that this discovery covers a lot
of the same grounds as the sites parameter, and it's hard  to define
semantics around a sites parameter without understanding the semantics of
scopes and API endpoints.


> It is a web-style approach though: the client follows links in a response.
> Such links in a response will not only occur at this initial point, they can
> appear anywhere in a web-style API. The client needs to know what to do
> (send token or not) at each point that a link appears -- "sites" answers
> this.


Clients need to more about these links (at least the response format). The
mechanism they use to find out about these links - documentation, discovery,
data returned with token request - could also provide the information about
whether a token should be sent to a particular API.


>
>
> > I think this idea relates closely to scopes and probably needs to be
> bound more tightly to the inbound scope parameter. Both identify a set of
> protected resources that can be accessed with the token - one is the
> requested resources, the other is the granted resources.
>
> This is not true.
> Facebook scopes, for instance, are permissions not identities of protected
> resources. If you want (generic) clients to be able to list requested
> resources (by URI?) that needs a separate proposal, and probably can't use
> "scopes".
>

I was using "set of protected resources" to mean a permission.

I should be more concrete about the use cases I see. Let's assume there's an
API where there are two endpoints, each with an associated permission
- contacts.list permission ->
http://contacts.serviceprovider.com/contacts/list
- calendar.get permission ->
http://calendar.serviceprovider.com/calendar/get

If the response to an authorization request includes the authorized scopes
(contacts.list, calendar.get), then the "sites" parameter is redundant.



>
> > In both cases you need to have a way to find a mapping
> > from protected resource identifier -> API endpoint you can call.
>
> Isn't a "protected resource identifier" the URI you GET/POST/PUT/DELETE to?
>
>
>
> P.S. On #1, a client needs an authz URI to send a user to -- knowing the
> scope and a base URI is just one way to build such an authz URI, being given
> the authz URI is another.
>
> --
> James Manger
>