Example Usage Flow / Reasons
Two-Step Authentication Process
Description: You have an app using the remote AIRisk instance in which only admins / trusted persons use.
Use Case / Needs:
See Available Users
Select One & Authenticate as them
i.e. Impersonation
Access endpoints and/or switch user (authenticating) as needed
Methodology
First, use
CLIENT_ID&CLIENT_SECRETfrom the local environmentInvoke the authentication process for a generic token and store that to be used as the bearer token (for now)
Have a local endpoint that calls the remote endpoint
/api/ListUsers, collects the returned JSONdata, and then redirects to a "Select User" page, listing the available users names & idsIf having a
USER_IDin the environment for example, you could have the form default to itCommon practice for this in
flaskwould be to redirect to an endpoint for select_user which, when called via a GET request renders the form page (with the form action pointing to the same URL), or when called via a POST request collecting the submitted form data from the same page and then redirecting as needed.
When a user is selected, set that as the active user id in the session and invoke the authentication process again but this time also passing
userid={SELECTED_USER_ID}as respective parameter types for the respective Authentication endpoints. Then save the returnedaccess_tokenas the active bearer token to use in the headers of future GET requests.
Single-User App
Description: You have an App with a custom interface and which interacts with a remote AIRisk project instance. You will be the only person running this program, and only will do so on your own secure device.
Use Case / Needs
Load
APIUserrelatedCLIENT_IDandCLIENT_SECRETfrom a.envfileLoad
ApplicationUserrelatedidalso from a.envfile in which belongs to your user accountAssuming both of the above exist and are valid.
Methodology
Load from
.envStore the
USER_IDenvironment variable asuseridin the session / local memory for usage across views/pages.Invoke the authentication process but include
useridas a parameter for both respective endpoints (encoding it in the URL for the GET request to/api/oauth2. Passing as a parameter in the POST request to/api/oauth2/Token)Use the access token as the bearer token across the app.
Last updated