Security for all APIs, both incoming to and outgoing from MercuryGate, must use OAuth2, specifically Authorization Code Grant using Proof Key for Code Exchange (PKCE), to obtain access and refresh tokens used to communicate on behalf of a customer.
All calls to OAuth or API endpoints must use https, and must support TLS 1.2 or greater (TLS 1.3 preferred).
Part of the Partner on-boarding process is the generation of client credentials through Client Registration. This registration is performed on the Partner system to create a Client ID and Client Secret for MercuryGate, as well as on the MercuryGate Authorization Server to create a Client ID and Client Secret for the Partner to use.
On-boarding also includes exchanging Authorization Server urls as well as any urls needed to call the various endpoints to be used. Other agreements and exchanges of information may also be required.
Once a Partner has been onboarded and customers have performed any required data-mapping or configuration necessary to use the API layer, a customer Super-User with the authority to authorize a connection with Partners must authorize the connection to MercuryGate and/or to the Partner (depending on the APIs involved) using an Authorization Code Grant between the systems. This is a one-time setup for the customer; it is not user-specific. Users will not have the opportunity to re-authorize during the course of using the APIs, as the client will be back-end systems (not the user's browser).
The customer Super-User will initiate a process whereby they will complete whatever actions are required by MercuryGate or the Partner to authorize the connection. This may include things such as filling out forms, signing contracts, or agreeing to usage agreements. Upon completing the process, the Authorization Server will provide an authorization code to the client system. The authorization code is used by the client system to make a back-end request to the Authorization Server to request the refresh and access tokens to be used when making service calls to the remote endpoints
Note that each customer has their own tokens identifying the parties involved in the service call. The body of the call will not include the tenant or partner identifiers -- they are implicitly associated with the token, and typically stored as claims.