Hi all,

I’d like to pitch the idea of changing the abstract OAuth description to 
incorporate  how OAuth is used in many B2E applications.
In my view, OAuth 2.1 is a great opportunity to do so, without the need to make 
any changes in the core protocol itself, so nothing gets ‘broken’.
The 2.1 RFC would be just acknowledging how OAuth is already used widely today.

To the best of my understanding, OAuth (as per RFC6749) originated from a 
Business-to-Consumer (B2C) context.
The typical example that is frequently used to explain OAuth is about an 
enduser (resource owner) that can grant a printing service (client) access to 
their protected photos stored at a photo sharing service (resource server).
What I see in everyday practice in the IAM field, is that OAuth is used for 
Business-to-employee (B2E) applications (often in combination with the OIDC 
extension).
In this context, the enduser is not the resource owner. Instead, the company is 
owning the resources stored at its resource servers and employees (or other 
type of endusers) are granted access  based on roles/rules implemented at the 
resource server.
One may say that OAuth was not designed for such B2E scenarios, but I would say 
that the protocol is perfectly suitable. Practice proves this.
I don’t have hard data to further prove my point but I expect OAuth is 
worldwide being used more often for B2E like applications than it is for B2C 
applications.

The good news is that the narrative around the core specs can be re-written to 
make it more generally applicable without changing the protocol itself.
I think this will be beneficial to anyone working with OAuth, newbies or 
experienced IAM workforce. In my view things will be easier to understand and 
closer to daily practice.

The main changes I’m proposing for section 1 are the following. Changes in the 
rest of the draft RFC follow naturally.


  1.  In the introduction I would add: “A different example is: an employee 
(enduser) can use an application (client) to access resources that are under 
control of his employer (resource owner).”
  2.  I would also add: “Besides delegating user authentication to the 
authorization server, the authorization server can arrange for an authorization 
decision through a process that involves neither client application nor 
service. If the enduser is the resource owner, the authorization server obtains 
an authorization grant from the enduser. If a different entity is the resource 
owner, the authorization server may make an authorization decision based on 
prearranged rules or roles.”
  3.  In section 1.1, I would propose to define 5 roles instead of 4.

OAuth defines five roles:
“enduser”:
Person that uses a client application to access protected resources on their 
behalf.
"resource owner":
An entity capable of granting access to a protected resource. The resource 
owner may be the enduser or it may be a different person or it may be an 
organization.  This is sometimes abbreviated as "RO".
"resource server":
The server hosting the protected resources, capable of accepting and responding 
to protected resource requests using access tokens. The resource server is 
often accessible via an API. This is sometimes abbreviated as "RS".
"client":
An application making protected resource requests on behalf of the enduser and 
with the resource owner’s authorization. The term "client" does not imply any 
particular implementation characteristics (e.g., whether the application 
executes on a server, a desktop, or other devices).
"authorization server":
The server issuing access tokens to the client after successfully 
authenticating the resource owner and obtaining authorization from the resource 
owner or making an authorization decision on behalf of the RO. This is 
sometimes abbreviated as "AS".


  1.  Mostly the term resource owner needs to be replaced with “enduser” except 
when it is about authorization.
  2.  In section 1.2, I propose to revise the abstract protocol flow 
description to say that it’s the authorization server that somehow 
obtains/makes an authorization decision. In the current abstract description of 
the OAuth flow it is the client that obtains the authorization. However in the 
actual grant flows there is never such interaction between client and resource 
owner. Neither in the Authorization Code flow nor the Client Credential  flow. 
In fact it’s always the AS that somehow arranges for an authorization decision: 
in AC flow, the AS may get consent from the enduser/RO and in the CC flow it is 
based on a previous arrangement. I think the following alternate abstraction 
would have a better fit with the various grant flows:

“1. The client requests authorization from the authorization server. 2. The 
authorization server obtains an authorization decision from the resource owner. 
This decision can be obtained by interaction with the resource owner or can be 
made made using logic that was pre-arrenged with the resource owner. 3. The 
client receives […etc…]”

Furthermore, I think that my proposal opens up OAuth for more scenarios, such 
as one consumer may granting another consumer access to its resources 
(UMA-like) and the AS would have a match with the concept of a Policy Decision 
Point (as per XACML specs).

I’m very curious to see your feedback on my proposal.
Do you agree with my point of generalizing beyond B2C?
Do you agree that Oauth 2.1 is the right opportunity to generalize OAuth from 
B2C to a wider set of scenarios?

Kind regards,

Jaap Francke
Product Manager IAM
+31(0)641495324
mendix.com
[signature_827714327]<http://www.mendix.com/>


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

Reply via email to