This document, OAuth 2.0 App2App Browserless Flow (Native App2App), discusses the [App2App] pattern where two applications act as OAuth Client and Authorization Server respectively, to natively authenticate and authorize an end-user.¶
It addresses the challenges introduced when a web browser is involved in OAuth flows through one or more Brokering Authorization Servers, which are needed because Client App is not an OAuth client of the User-Interacting Authorization Server.¶
Since no app owns OAuth Brokers' urls, App2App flows involving brokers require using a web browser, which degrades the user experience.¶
This document presents a protocol enabling native App2App browser-less navigation, through any number of brokers, without compromising on any security property.¶
[OpenID.Native-SSO] also offers a native SSO flow across applications without requiring the browser. However, it is dealing with the specific sub-case when both apps are published by the same issuer and leverage this fact to share information.¶
In addition to the terms defined in referenced specifications, this document uses
the following terms:¶
- "OAuth":
-
In this document, "OAuth" refers to OAuth 2.0, [RFC6749] and [RFC6750] as well as [OpenID], both in their authorization code flow.¶
- "PKCE":
-
Proof Key for Code Exchange (PKCE) [RFC7636], a mechanism
to prevent various attacks on OAuth authorization codes.¶
- "OAuth Broker":
-
A component acting as an Authorization Server for its clients, as well as an OAuth Client towards Downstream Authorization Servers.
Brokers are used to facilitate a trust relationship when there is no direct relation between an OAuth Client and the final Authorization Server where end-user authenticates and authorizes.
Brokers are an established pattern for establishing trust in federation use cases, such as in Academia and in the business world across corporations.
Brokers may be replaced in the future with dynamic trust establishment leveraging [OpenID.Federation].¶
- "Client App":
-
Native app implementing [RFC8252] as OAuth client of Primary Broker, and whose redirect_uri is claimed as a deep link.¶
- "Primary Broker":
-
An OAuth Broker serving as Authorization Server of Client App.
And also an OAuth client of a Downstream Authorization Server.
Primary Broker performs additional handling for App2App use-case, covered in Section 5.2.¶
- "Downstream Authorization Server":
-
An Authorization Server which may be a Secondary Broker or a User-Interacting Authorization Server.¶
- "Secondary Broker":
-
A Broker redirecting the flow, which does not perform user authentication and authorization.¶
- "User-Interacting Authorization Server":
-
The Authorization Server which interacts with end-user to perform authentication and authorization. May or may not offer App2App via a native app claiming it's urls as deep links.
Such app may or may not be installed on end-user's device.¶