So long as you’re storing the client_id and client_secret in your LDAP and not 
putting a username and password (that normally represents a person) into the 
software, you’re fine. That’s just a case of externalizing the client 
registration to the LDAP system — it’s still registered. 

Otherwise, if you’re putting a person’s information into the client there, 
you’re doing impersonation. That’s bad, don’t do that.

 — Justin

> On Mar 15, 2016, at 9:17 AM, Sergey Beryozkin <sberyoz...@gmail.com> wrote:
> 
> Hi Justin
> 
> Many thanks for the quick response.
> On 15/03/16 12:53, Justin Richer wrote:
>> Is Alice the client here (the piece of software), or is Alice the
>> resource owner?
> Piece of software, something that needs to run without the human user being 
> involved
>> If Alice is the resource owner, then you should
>> absolutely not be using the client credentials flow like this.
>> 
> Sure.
> 
>> The client credentials flow is designed for cases where the client is
>> acting on its own behalf, not on behalf of any particular user. It's an
>> optimization of the canonical authorization code flow, where there is no
>> interaction with the resource owner because there is no resource owner
>> as a separate entity. It's most useful for backend systems that would
>> have traditionally used a developer key to get access to bulk data. If
>> you're using it for single-user access, you're doing it wrong.
>> 
> I guess I'm still OK here, as I said, it is a piece of software which runs 
> without a user. Like in all web services (SOAP or plain HTTP client 
> invocations) where the client sets some credentials and accesses some data in 
> the remote service.
> 
>> Also, you should keep in mind that things that seem "simple" on the
>> surface are often simplified at the cost of making specific security
>> concessions and assumptions. The authorization code flow is "complex"
>> for very good reasons, all of them security focused. You should never
>> pick a different OAuth flow just because it looks simpler, you should
>> only pick them if you're within the use case that it was designed for,
>> and therefor the assumptions of its security patterns match.
>> 
> +1
>> We've seen a *ton* of problems with people picking the implicit flow in
>> the real world and using it with clients other than in-browser
>> applications that it was designed for. If you're not in that specific
>> space, you're taking on huge risks.
> Sure, I understand.
> 
> So, as far as my original question is concerned, given that a client piece of 
> software (no human user is involved) uses some credentials to get the token 
> with client_credentials, would it be OK to avoid the explicit 'Client' 
> registration with AS, given that the authentication system employed by AS is 
> already aware of such credentials, I guess yes.
> 
> Thanks, Sergey
>> 
>>  -- Justin
>> 
>> On 3/15/2016 8:37 AM, Sergey Beryozkin wrote:
>>> Hi All
>>> 
>>> I've alway been thinking of Client Credentials as being the simplest
>>> flow but now that I'm looking at implementing it myself to be used in
>>> the real productions, I'm realizing that there's something I do not
>>> understand about it:
>>> 
>>> Do the clients using Client Credentials flow need to be
>>> OAuth2-registered, even when such clients are already known to the
>>> authentication system ?
>>> 
>>> For example, there might be some LDAP/etc entry for Alice (name,
>>> password). Now a client is using a client credentials flow to get an
>>> access token:
>>> 
>>> POST /token HTTP/1.1
>>> Host: server.example.com
>>> Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
>>> Content-Type: application/x-www-form-urlencoded
>>> 
>>> grant_type=client_credentials
>>> 
>>> I hope that in this case no explicit registration (the one typically
>>> required in redirection based flows) is needed, the client (Alice) has
>>> been 'implicitly' registered (as far as the notion of OAuth2 client is
>>> concerned) in LDAP/etc.
>>> 
>>> If the explicit registration with OAuth2 AS was still required in the
>>> case above then it would lead to a fairly massive duplication of
>>> effort (Alice is registered in Ldap, then also with OAuth2 AS), etc
>>> 
>>> Can someone clarify it please ?
>>> 
>>> Thanks, Sergey
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> 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
> 
> _______________________________________________
> 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