Are you trying to use token introspection as evidence of authentication of the 
user?

Phil

@independentid
www.independentid.com
phil.h...@oracle.com

> On Jul 20, 2015, at 12:03 AM, William Denniss <wdenn...@google.com> wrote:
> 
> I see in earlier drafts that client authentication MUST was a SHOULD.
> 
> Why not put it back to a SHOULD, and make these arguments in the Security 
> Considerations?  By the sound of it in some implementations there are good 
> reasons for doing client authentication, but they may not apply to everyone, 
> so do we need to be so prescriptive?  An error response can be added for 
> requests the server deems require client authentication.
> 
> It wouldn't have to be an all-or-nothing policy choice either, a server could 
> chose to reject requests from confidential clients where client 
> authentication is not provided, but accept requests without client 
> authentication from non-confidential clients.  A server that has sufficiently 
> high entropy in the tokens, abuse protection on the endpoint, and is not 
> concerned about an unrelated party (that happens to have a token intended for 
> a different party) learning the token metadata, could simply not require any 
> client authentication at all.
> 
> Apart from anything, it is really trivial to support non-confidential client 
> usage, so why not?  Perhaps there are some use-cases that will turn up in the 
> future (especially since as defined the introspection response is 
> extensible). One I can think of now is debugging: it's useful during 
> development to be able to inspect the tokens you get back from the AS.
> 
> Best,
> William
> 
> 
> On Sun, Jul 19, 2015 at 9:14 PM, Justin Richer <jric...@mit.edu 
> <mailto:jric...@mit.edu>> wrote:
> In the case of a “public client” using a token, the authorization is the 
> token that the resource server uses to call the introspection endpoint, along 
> side the token that it is introspecting. This is exactly how the UMA protocol 
> works: the resource server has a “Protection API Token” that it uses to call 
> several endpoints at the AS, including the introspection endpoint. In UMA, 
> this PAT is given to the resource server through a normal OAuth transaction 
> with an end user who facilitates the RS->AS introduction.
> 
> And I think this is all actually a moot point because clients shouldn’t be 
> doing the introspection in the first place — the whole spec is there to 
> support resource servers introspecting at the auth server. So you probably 
> don’t have “public client resource servers” out there. We simply re-used 
> OAuth’s existing client authentication mechanism, that doesn’t make them 
> clients. This decision is based on development and deployment experience (as 
> in, several people independently built it exactly this way). Do you have a 
> use case where you’ve got a protected resource that can’t hold credentials 
> (either a client secret or a public/private keypair) to authenticate with, 
> and can’t be introduced using OAuth to the AS as in UMA?
> 
> To your other point: An attacker has less of a chance of getting information 
> about a token by fishing at a protected resource with tokens, since they’re 
> not being returned information about the token other than the fact that the 
> token worked. (Or at least it seemed to work because a result came back — you 
> could easily give a suspected attacker valid-looking-but-fake data as one 
> mitigation mechanism.) The introspection response can give you information 
> about where else the token could be used, potentially. Additionally, the RS 
> really ought to be preventing data-fishing attacks like this just for its own 
> sake anyway. There are lots of techniques for doing this, but they tend to be 
> specific to the kind of API that’s being served.
> 
> Requiring the resource server to authenticate with the authorization server 
> also allows you to do a few other useful things. Our implementation, for 
> example, limits the token information that is returned to a particular AS. 
> This allows us to have tokens that can be used in multiple RS’s without those 
> RS’s ever even knowing the token is powerful enough to be used elsewhere. It 
> prevents information about the authorization from leaking to parties who have 
> no business knowing.
> 
> Hope this helps clarify it,
>  — Justin
> 
>> On Jul 19, 2015, at 7:59 PM, Aaron Parecki <aa...@parecki.com 
>> <mailto:aa...@parecki.com>> wrote:
>> 
>> How are public clients supposed to authenticate if there is no secret?
>> 
>> Isn't "fishing for valid tokens" just as much of an issue at the resource 
>> server? I don't see how having the introspection endpoint require client 
>> authentication actually solves the fishing problem since attackers could 
>> just fish against the resource server. In fact, if the resource server 
>> queries the introspection endpoint to check if tokens are valid, then that 
>> effectively gives an attacker a way to fish for tokens using the resource 
>> server's credentials. 
>> 
>> ---
>> Aaron Parecki
>> http://aaronparecki.com <http://aaronparecki.com/>
>> 
>> On Sat, Jul 18, 2015 at 10:04 PM Justin Richer <jric...@mit.edu 
>> <mailto:jric...@mit.edu>> wrote:
>> Public clients can use the token-based auth mechanism, can’t they? If you 
>> don’t have some form of authentication on the introspection endpoint, you 
>> end up with a way for people to anonymously and programmatically fish for 
>> valid token values. 
>> 
>>  — Justin
>> 
>> 
>>> On Jul 19, 2015, at 6:30 AM, Aaron Parecki <aa...@parecki.com 
>>> <mailto:aa...@parecki.com>> wrote:
>>> 
>> 
>>> The introspection draft states that the introspection endpoint MUST require 
>>> authentication of clients. It mentions either client authentication 
>>> (id+secret) or a separate bearer token.
>>> 
>>> How are public clients expected to use the token introspection endpoint? I 
>>> didn't see a note in the document about that at all.
>>> 
>> 
>>> ----
>>> Aaron Parecki
>>> aaronparecki.com <http://aaronparecki.com/>
>>> @aaronpk <http://twitter.com/aaronpk>
>>> 
>>> _______________________________________________
>>> 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>
> 
> 
> _______________________________________________
> 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

Reply via email to