Authorization
ShipEngine Connect supports both Basic Auth and the OAuth 2.0 protocol for Order Apps. OAuth allows users to give your app permission to interact with your backend API on their behalf without having to supply their password. Instead, OAuth enables an end user to provide their credentials to a third party identity provider for authentication. This is much safer for the end user than providing their login credentials directly to your app. The access token can be revoked at any time without affecting any other applications or websites that have been given permission to act on behalf of the user.
Using OAuth 2.0 in Order Apps
You will provide a blank connection form in your Order App that will be displayed whenever
a user selects your app from within one of our e-commerce applications. When the user clicks the Connect
button, they
will be redirected to a third party identity provider based on the workflow you have defined in your OAuth Config Definition file.
The user will then provide their credentials to the third party identity provider who will authenticate the user. Upon successful
authentication, the identity provider will issue an access token for your app to use when making calls to your backend API.
When a method in your Order App is called, it will receive a transaction
object
as the first parameter. You can then retrieve the OAuth access token from the transaction.session.auth.accessToken
property.
Using Basic Auth in Order Apps
Specify the necessary authentication data in the connection form of your Order App.
These fields will be included on the transaction
object passed to the other methods of your app.
If your form includes username
, password
, and/or api_key
fields, they will be available via the transaction.session.auth
object.
All other fields will be attached to transaction.session
.
Authorizing Using an API Key
If no OAuth Config is defined, and the fields associated with Basic Auth are not included in the connection form, we will assume the integration is using API Key Auth. In this case, you must specify that key inside the field api_key
in the connection form. It can be referenced in the transaction.session.auth
object.