> On Feb 25, 2021, at 2:59 PM, Evert Pot <m...@evertpot.com> wrote:
> On 2021-02-25 3:41 a.m., Seán Kelleher wrote:
>> Yep, this is the big point - OAuth is designed to require the the third leg 
>> of trust that creates the NxM problem.
>> 
>> I believe the snippet of Justin's that you quoted actually shows you how you 
>> can forgo the trust element using dynamic client registration. It still 
>> allows a "server" to identify requests and impose security policies via the 
>> client ID, but without requiring the client author to manually register the 
>> client in advance of using it (e.g. in the case where the client author 
>> doesn't even know what servers the client is going to be connecting to). You 
>> still need the client ID, but anyone can get one whenever they need it.
> Apologies if this a dumb question, but how would you discover the dynamic 
> client registration endpoint after getting a 401 unauthorized?
> 
> I couldn't really find anything in RFC7591 about this.
> 
We deliberately left that level of discovery out of the registration spec 
(7591) because, as it turns out, RS-first discovery is a lot harder than it 
looks on the surface. There are some tricky privacy considerations around 
divulging an AS to an unknown party, and while not a dead-stop there you’ve got 
a lot of use cases where it hurts more than it helps.

In the end, we decided not to solve those aspects together and leave discovery 
for another spec. I think the call made sense at the time. Now, obviously, this 
assumption goes halfway out the window when you start doing the registration 
programmatically, and so discovery on a static relationship vs. discovery on a 
dynamic relationship are pretty different. 

We’re taking a different approach in GNAP, based on work that was done in User 
Manage Access (UMA):

https://www.ietf.org/archive/id/draft-ietf-gnap-core-protocol-04.html#name-requesting-resources-with-i
 
<https://www.ietf.org/archive/id/draft-ietf-gnap-core-protocol-04.html#name-requesting-resources-with-i>

Caveat, there are still a lot of open questions about the details of this, the 
focus in GNAP has been on the core delegation protocol so far, but it’s on our 
radar and we welcome the input.

And then there’s the considerations about hooking up more RS’s in real time, or 
even having the user/client SPECIFY the AS for the RS to talk to. So ultimately 
it’s an NxMxP problem, with client, AS, and RS in each slot varying differently 
depending on the API in question. In most OAuth use cases, the AS and RS have a 
pre-existing relationship that the client doesn’t know or care about. The 
client’s just trying to “call this API” and so it gets configured with all the 
bits it needs to ahead of time when it gets registered. But with a common API, 
like POP or IMAP, the client just needs to know how to get to the next step to 
keep going. 

This is one thing I’ve found security engineers simply Do Not Get more often 
than not: client developers don’t care about your security protocol. Your 
security is what gets in the way of them doing what they want to do, which is 
use the API and build an awesome thing. The simpler-to-follow we can make the 
security process, the better it will be for everyone.

 — Justin
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to