Re: [OAUTH-WG] Initial OAuth working group Discovery specification

"Nat Sakimura" <> Fri, 12 February 2016 09:00 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 3F2D11B4217 for <>; Fri, 12 Feb 2016 01:00:24 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: 3.009
X-Spam-Level: ***
X-Spam-Status: No, score=3.009 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_JP=1.244, HOST_EQ_JP=1.265, HTML_MESSAGE=0.001, J_CHICKENPOX_27=0.6, J_CHICKENPOX_34=0.6, J_CHICKENPOX_35=0.6, J_CHICKENPOX_92=0.6, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id fM3C49bEWyMd for <>; Fri, 12 Feb 2016 01:00:18 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 8FFD01B419A for <>; Fri, 12 Feb 2016 01:00:17 -0800 (PST)
Received: from (unknown []) by (Postfix) with SMTP id 0E8231968A1; Fri, 12 Feb 2016 18:00:16 +0900 (JST)
Received: from ([]) by (unknown) with ESMTP id u1C90F6N002449; Fri, 12 Feb 2016 18:00:15 +0900
Received: from (localhost.localdomain []) by (Switch-3.3.4/Switch-3.3.4) with ESMTP id u1C90FjS058727; Fri, 12 Feb 2016 18:00:15 +0900
Received: (from mailnull@localhost) by (Switch-3.3.4/Switch-3.3.0/Submit) id u1C90Fc1058726; Fri, 12 Feb 2016 18:00:15 +0900
X-Authentication-Warning: mailnull set sender to using -f
Received: from ([]) by (Switch-3.3.4/Switch-3.3.4) with ESMTP id u1C90FXj058723; Fri, 12 Feb 2016 18:00:15 +0900
From: Nat Sakimura <>
To: 'Justin Richer' <>, 'Phil Hunt' <>
References: <> <> <> <> <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
Date: Fri, 12 Feb 2016 18:00:15 +0900
Message-ID: <08f601d16573$ca301c10$5e905430$>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_08F7_01D165BF.3A2865E0"
X-Mailer: Microsoft Outlook 15.0
thread-index: AQEqpkhdJsfoUR4zRG8olMmCsa2lPAIIX0ARAjZWSUUBnSkyjAGw8EkfAmqUCfoBwixONAInubmkAVAAXGsB6JxkdgF1wQobAiFSwCQBTX1sDQLXpAkvn67oRsA=
Content-Language: ja
X-MailAdviser: 20141126
Archived-At: <>
Subject: Re: [OAUTH-WG] Initial OAuth working group Discovery specification
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: OAUTH WG <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 12 Feb 2016 09:00:24 -0000

Sorry to chime in a bit late, but IMHO, the discovery document discovery etc. starting from the protected resource should happen via RFC5988. 


That is, when the client asks for the access, it gets an error like: 


HTTP/1.1 401 Unauthorized

WWW-Authenticate: Bearer realm="example"

Link: <>; rel="duri",

  <>; rel="duri",

   <>; rel="payments"



I used .well-known/openid-configuration in the example, but it does not have to be. It can be anything. It does not pollute the server uri space this way and can support multiple authorization servers. 


See:  <>








PLEASE READ :This e-mail is confidential and intended for the

named recipient only. If you are not an intended recipient,

please notify the sender  and delete this e-mail.


From: OAuth [] On Behalf Of Justin Richer
Sent: Wednesday, February 10, 2016 10:40 PM
To: Phil Hunt
Cc: <>
Subject: Re: [OAUTH-WG] Initial OAuth working group Discovery specification


Yes, it says that because we can't ever talk about people as being the only things in the world. The purpose of webfinger is to take something that's easily human-memorizable, like an email-formatted identifier, and transform it into an HTTPS URL that can be fetched with GET. It's true that you could have an organization or bot or other entity that you want to refer to with a username@domain.ext <mailto:username@domain.ext>  type of format, sure. But I argue that if you're talking about a resource server, you're likely to already have a URL that you can put in to the .well-known discovery step. You don't need the human-readable transform to do what you're talking about below in any of the use cases, you just need the service discovery document part. 

Additionally, we all three actually agree about the importance of discovery from a resource server, except that John and I couched that in "knowing the specific API" and having that API define its first-stage discovery process. OIDC used webfinger because it makes sense to have a human-readable identifier for an identity protocol. It probably makes sense to have SCIM define its own webfinger REL as well since you've got entity identifiers all over the place. But it doesn't really make sense for OAuth, and especially not the multi-part resource you're talking about below. 

And to add just a bit from personal experience, we actually just relaxed and simplified our webfinger implementation so that it returns the same document regardless of what REL you asked for anyway, which is pretty common with the handful of webfinger servers that I've seen in the wild.

 -- Justin

On 2/10/2016 3:10 AM, Phil Hunt wrote:



The abstract to 7033 says. 


   This specification defines the WebFinger protocol, which can be used
   to discover information about people or other entities on the
   Internet using standard HTTP methods.  WebFinger discovers
   information for a URI that might not be usable as a locator
   otherwise, such as account or email URIs.


I am pushing on this because I think we really need to bind the resource service into discovery somehow. The RS is just as important as the other oauth endpoints.


If a client can be convinced or configured to use a fake resource server (that proxies the real one), then we have the same problem as a client being convinced to use a fake token endpoint — only much worse.


I don’t get the big taboo against webfinger here. We don’t have to use webfinger - but are you arguing for something completely different? A new protocol? Since OIDC already started the ball rolling with webfinger, it seems worth while trying to use it.


What am I missing here?




@independentid <> <> 





On Feb 9, 2016, at 6:00 PM, Justin Richer < <> > wrote:


+1 to John’s point. Webfinger is, as designed, about doing per-user service discovery. Let’s keep the OAuth service discovery away from that. What does it mean to find the OAuth server for a user, anyway? Without the context of a resource protocol, I don’t think it does. If you already have the domain and you don’t need to do a transform from a user-identifier, just go straight to .well-known and have an OAuth service discovery document. 


I think the current discovery draft has tried much too hard to copy what’s in OIDC, where it does make sense to use webfinger and per-user discovery systems in the context of a specific identity protocol. It’s a great starting place, but I think we decidedly need to get away from it now.


 — Justin


On Feb 9, 2016, at 7:34 PM, John Bradley < <> > wrote:


OK I was talking about discovering user services via webfinger, (The way connect uses it and most other things) and you are talking about using it to discover things about a server. 


Your first example had <>  as the account you were querying, and that seemed like a user discovery to me.


If you are looking up the OAuth config for a server why would you not just go strait to the .wellknown 


By the way in your example you would need to run a webfinger server on <>  to be able to answer the query. 


looking for .wellknown on <>  seems more direct.


You seem to be looking more for where is the service for the domain rather than the user.



John B.


On Feb 9, 2016, at 9:20 PM, Phil Hunt < <> > wrote:




I am following 7033.  The rel parameter is not the query it is the sub set of the resource you want information about.


There is nothing complex here. In most cases this would be responded to by a simple transformation pattern.


Correcting my previous example (but showing it in easy to read form)…the proper query that returns information for both SCIM and OAuth endpoints would be:


GET /.well-known/webfinger?resource= <> &rel=oauth


This would return something like:

     HTTP/1.1 200 OK
     Access-Control-Allow-Origin: *
     Content-Type: application/jrd+json
       "subject" : “ <> ",
       "links" :
           "rel" : “oauth",
           "href" : ""


This tells me that the OAuth server used for SCIM at <>  is at <> 


Note that 7033 has an extension mechanism to define other schemes. E.g. “acct” is just one scheme. Others can be defined. For example, “rs:” could be registered allowing URIs to be used for the resource instead of an actual https endpoint (which is also allowed).


GET /.well-known/webfinger?resource=rs:scim&rel=oauth


This would return something like:

     HTTP/1.1 200 OK
     Access-Control-Allow-Origin: *
     Content-Type: application/jrd+json
       "subject" : “rs:scim",
       "links" :
           "rel" : “oauth",
           "href" : ""


This says something different.  This says that for scim services the oauth service is <> .


The first example actually has more granularity.  The second example does not require the client to know the scim endpoint in advance.





@independentid <> <> 





On Feb 9, 2016, at 3:49 PM, John Bradley < <> > wrote:


Have a look at 


The way to do what you want would mean having multiple array objects with the same rel and somehow differentiating them via properties.


I think that is going to be more complicated for clients to parse.


I think that the difference is how you look at the actors involved.  I think clients look for a service and then go from there,  you are advocating that they would look for a authorization method and then find services that support that method.   


So yes we are looking at it from different ends.


I don’t know that defining OAuth genericly at the webfinger level of user discovery makes sense.   Perhaps for a enterprise custom API environment it might.


John B.


On Feb 9, 2016, at 8:24 PM, Phil Hunt < <> > wrote:




Our proposals are the opposite of one-another.  In your proposal you have people querying scim to get oauth.  I’m saying you query rel=scim to get information about SCIM.  Querying rel=SCIM and receiving OAuth seems bass- ackwards does it not?


Further, having rel=oauth lets us define one RFC for all that covers all the security concerns for oauth discovery.  If we do it your way then every resource that registers its own discovery also has to have an oauth section that copies the oauth discovery stuff because there is no longer an oauth discovery relationship.




@independentid <> <> 





On Feb 9, 2016, at 3:16 PM, John Bradley < <> > wrote:


Please don’t break the webfinger RFC. 


If you search for SCIM you can have additional properties returned as part of the entry, but you only search for one thing.


Webfinger is designed to be very simple to implement.  In general you just get back the whole document with all the rel. 

The query filter is a optional optimization. 


The JSON in the doc is by rel.


On Feb 9, 2016, at 8:03 PM, Phil Hunt (IDM) < <> > wrote:


The rel for scim returns the endpoint for scim. 


The rel for oauth returns endpoints for oauth. 


The query lets the client say i want the endpoint for oauth used for scim. 


I suppose you could reverse it but then we'll have oauth discovery happening in different ways across many different specs. One set of considerations is enough. :-)



On Feb 9, 2016, at 14:52, John Bradley < <> > wrote:

You would define a rel uri for SCIM.   The SCIM entry can have sub properties if it supported more than one auth type,  or you could have a SCIM discovery document that the URI points to. 


There are probably multiple ways to do it.


I don’t think trying to have a oauth rel and then sub types is going to make sense to developers.  It is also not a good fit for Webfinger.


I also suspect that SCIM is more naturally part of a authentication service It may be that the authentication service points at the SCIM service.


Remember that webfinger is a account alias and may not be the subject that the SP/RP knows the user as.


Each service will need to be thought through for webfinger as the account identity may mean different things depending on the protocol, and not every protocol needs per user discovery.


John B

On Feb 9, 2016, at 7:39 PM, Phil Hunt (IDM) < <> > wrote:


Another example is to look at scim discovery(in contrast with connect).


When asked separately the answers may be different. 


Asking what is the oauth server for scim is yet another relation.  So may be we need a scheme for oauth where query is rs:someval and optionally an acnt value to. 


For example

Get ./well-known/webfinger?rel=oauth&query=rs:scim& <> 


Note i probably have the compound query syntax wrong. 


On Feb 9, 2016, at 14:03, John Bradley < <> > wrote:

If we keep webfinger I don’t think that having a generic OAuth rel makes sense.   It should be up to each API/Protocol to define it’s own rel value like Connect has done. 


It is not reasonable to think that a persons ID provider is going to be the same as the one for calendaring or photo sharing.


So I could go two ways with webfinger,  leave it out completely, or leave it in but make it up to the application to define a rel value.

I expect that some things using UMA in web-finger would point directly to the resource and the resource would point the client at the correct UMA server.


The config file name in .well-known could stay as openid-configuration for historical reasons or we could change it.


I think we first need to decide if every protocol/API is going to have its own config file, we are going to get apps to retrieve multiple files,  or everything is going to go into one config-file and applicatins just add to that?


I prefer not to change the file name if we are going for one config file, but if we do one alias/link is probably not the end of the world, as I doubt people will ever remove openid-configuration one if they have it now.


John B.



On Feb 9, 2016, at 2:19 PM, Justin Richer < <> > wrote:


Mike, thanks for putting this up. 



I would like to propose for two changes that have been brought up before:


1) The wholesale removal of section 2, Webfinger lookup. 


2) The changing of "/.well-known/openid-configuration” to "/.well-known/oauth-authorization-server” or something else not openid-related.




 — Justin



On Feb 9, 2016, at 9:09 AM, Mike Jones < <> > wrote:


We have created the initial working group version of OAuth Discovery based on draft-jones-oauth-discovery-01, with no normative changes.


The specification is available at:



An HTML-formatted version is also available at:



                                                          -- Mike


P.S.  This notice was also posted at and as @selfissued <> .


OAuth mailing list <>


OAuth mailing list <>


OAuth mailing list <>