- SDK module - responsible to interaction between presentation layer (App module) and Identity Service.
- APP module - responsible to interaction between end-user and SDK module and implementing base flows logic.
- Without explicit need not to store sensitive data
- Stored sensitive data should be encrypted
- Asymmetric keys should be stored in the system protected area (e.g. Keystore)
- Access to application should be blocked by pin input or fingerprint input
- Action confirmation should be done by fingerprint input or pin input
Click on IMAGE to enlarge the Sequence Diagram.
- User scans QR code
- Parse QR code and extract deep-link with provider's
configuration url
- Fetch provider configuration from
configuration url
{
"data": {
"connect_url": "https://connector.bank_url.com",
"code": "demobank",
"name": "Demobank",
"logo_url": "https://connector.bank_url.com/assets/logo.png",
"version": "1"
}
}
- Create Connection model and RSA key-pair in Keystore
- Send initial data to connect
{
"data": {
"public_key": "-----BEGIN PUBLIC KEY-----\nMIGfMAGCSqGSIAB\n-----END PUBLIC KEY-----\n",
"return_url": "authenticator://oauth/redirect",
"platform": "android",
"push_token": "e886d1a84cfa3cd5343b70a3f9971758e"
}
}
- Receive
connect_url
for future authentication - Show authentication
connect_url
in WebView and wait for redirect which starts withreturn_url
- Parse
return_url
and addaccess_token
toConnection
if exist or otherwise get error and show it to user - Save
Connection
- Show connections list with new
Connection
Click on IMAGE to enlarge the Sequence Diagram.
- Receive push notification
- User click on push notification
- Run the application and ask fingerprint/pin input to unlock app.
- Show Authorization Details
- Run poll Authorization data by
connection_id
andauthorization_id
from push notification - Decrypt received response and update view content.
- If user click
Confirm/Deny
send Confirm/Deny request. - If received success response close screen and application
- Open Authorizations list screen
- Poll Authorizations list
- Decrypt received response and show list of available (not expired) authorizations
- If user click
Confirm/Deny
send Confirm/Deny request. If user clickConfirm
ask before sending request, fingerprint/pin confirmation. - If received success response remove corresponding list item.
id
- a unique identifier received from server-sideguid
- generated unique identifier (i.e. 128-bit UUID). Alias (Tag) of asymmetric keys in KeyStorename
- the name of the Service Providercode
- the code of the Service Providerconnect_url
- a base URL of Service Provider API from QR code. Used as prefix for all network connectionslogo_url
- the logo asset url of the Service Provideraccess_token
- a unique token string for authenticated access to API resourcesstatus
- connection status (ACTIVE
orINACTIVE
)created_at
- a model creation datetimeupdated_at
- a model update datetime
Copyright © 2019 Salt Edge. https://www.saltedge.com