App2App Authorization
Perform faster authentication flow via another app installed on the same device.
Last updated
Perform faster authentication flow via another app installed on the same device.
Last updated
This may be familiar for users from UK, which many neobanks are using the app2app mechanism to authorize the money transfer from 1 bank app to another.
The App2App mechanism allows one app to authenticate the user using another apps connected to the auth server installed on the same device. This is achieved by universal links and the apps do not need to share the session via the system browser or the refresh tokens via the token storage.
This is an Enterprise feature, please contact us for using the App2App flow in your project at https://www.authgear.com/talk-with-us
Please note that this is not the Single Sign-on feature, if your are offering multiple apps under the same brand and wish the users to use a shared login session among their apps in the device, you may want to use Single Sign-on instead. App2app should be used when:
The session cannot be shared via the browser cookies
The session cannot be shared via a common token storage
An app can start the authentication flow by opening a link to another app, instead of using the authorization endpoint. The app which handles the link should validate the authentication request, then could return a valid authorization code. The valid code is then transferred to the original app using universal link. The initiating app can use that authorization code to perform code exchange for tokens with Authgear.
A detailed explanation on the technology can be found in this specification.
This is an Enterprise feature, please contact us for enabling the App2App flow in your project at https://www.authgear.com/talk-with-us
Go to the Application detail page of the authorizing app, i.e. the app which handles the app2app authentication requests.
Scroll to the bottom and you will see the App2App config panel.
Migration mode offers a less secure mechanism which helps older user sessions to participate in App2App. DO NOT enable it unless there is migration problem.
Go to the Application detail page of the initiating app, i.e. the app which initiates the app2app authentication requests.
In the redirect URIs, a universal link that's capable of opening this app should be set.
Define and set up the universal links for both apps, for example:
https://a.example.com/authorize
should open the authorizing app (App A)
https://b.example.com/redirect
should open the initiating app (App B)
In App B, call startApp2AppAuthentication(options: App2AppAuthenticateOptions)
to initiate the app2app login
App2AppAuthenticateOptions.authorizationEndpoint
should be an url of an universal link pointing to App A, i.e. https://a.example.com/authorize
App2AppAuthenticateOptions.redirectUri
should be an URI for the authorizing app to return the authentication result. It must be an universal link which opens the current app. i.e. https://b.example.com/redirect
In App A, upon receiving the app2app login request
Call parseApp2AppAuthenticationRequest(url: URL): App2AppAuthenticateRequest?
The result will be null
if the url is not a valid app2app request.
You can approve or reject the app2app request in App A
Approve: approveApp2AppAuthenticationRequest(request: App2AppAuthenticateRequest)
Approves an app2app request returning the result through the redirect URI.
request
should be the return value of parseApp2AppAuthenticationRequest
.
This method must be called when then SDK session state is AUTHENTICATED
, and the current session supported app2app authentication by providing a device_key
, or else an error will be thrown.
Reject: rejectApp2AppAuthenticationRequest(request: App2AppAuthenticateRequest, error: Error)
Rejects an app2app request, returning an error through the redirect URI.
request
should be the return value of parseApp2AppAuthenticationRequest
.
error
is the reason to reject the request.
When it's back to App B, call handleApp2AppAuthenticationResult(url: URL)
This method should be called by the app which initiate the app2app authentication flow, and when received the result through the universal link, url
should be the URL of the universal link received.
Select Enable App2App login for this Application"